Age | Commit message (Collapse) | Author |
|
am: 68c4930db8
* commit '68c4930db88a1b7fbea0613ffbe08d664f9dd2d5':
Remove header from LOCAL_SRC_FILES
|
|
The build system does not use headers in LOCAL_SRC_FILES. To prevent
typos, it's becoming a warning to add something to LOCAL_SRC_FILES that
is not used.
Also removes the Android.mk from LOCAL_ADDITIONAL_DEPENDENCIES. Our make
setup now automatically adds it, and kati no longer needs it.
Change-Id: I12d37fc0daad99e4873edde4402731d8394c53dc
|
|
am: 224eaff0a9
* commit '224eaff0a908cd56b9981592e6469aec3cdb8725':
Fio: Silence unused-X warnings
|
|
These are benign. Reduce build noise.
Bug: 18632512
Change-Id: I29493d9c59420c5f9959121215ae37e2bf969bf2
|
|
am: 4be92ff9cd
* commit '4be92ff9cdab332dec621f403d29765be42cc024':
Enable clang after new Android clang upgrade.
|
|
* Now Android clang can support TLS like gcc.
BUG: 17167262
BUG: 21082792
Change-Id: I9303f5c78e52147e544d83d12246258e893a0d3e
|
|
This will be used for automated notification of external vulnerability
reports.
Change-Id: Id0f69c8b10838daf8b452c8ed99c22908efc00db
|
|
Change-Id: Ia51e784b350063ea085d7cc62bd693aa3a5be455
|
|
LOCAL_LDLIBS is unnecessary, libdl is already in LOCAL_SHARED_LIBRARIES
LOCAL_CFLAGSS_64 -> LOCAL_CFLAGS_64
Change-Id: I574a795c10fcf7d1d54669aac8f464265a6cf6e9
|
|
Causes a Bus Error when running fio.
Change-Id: I388673eb3c5d596026647543d14c47ba08fef3c7
|
|
Change-Id: I2824bd83e191a0af8bc20c95681eb841fcb40f1c
|
|
Change-Id: I7bca83958d8e01323d511ba96fb3ae22f9b6ff7e
|
|
Commit 23bd40f944b7 shrank our pool size from 128 pools at 8MB max,
to one static 16MB pool. Christian reports:
"For our tests with about 250k files we found the smalloc pool being
depleted. Now for us values of 3-4 would be enough, but since it is a
compile time switch I'd like to make it safe for everybody and set 8."
Bump the pool alloc to 8 pools again, retaining the 16MB size. That's
still substantially less than before, but should be enough for most
cases. Allocate the pools at init time, to avoid the issue that the
original commit fixed.
Also fix a bug where we failed to iterate some pools when restarting
the allocation scan, resulting in less-than-optimal exhaustion of all
pools before smalloc() gave up and returned NULL.
Signed-off-by: Jens Axboe <axboe@fb.com>
|
|
smalloc_strdup didn't check for allocation success and thereby ran into
segfaults if the single pool went out of memory.
Now with this patch applied it is still failing, but in a more consistent
way than segfaulting.
You still get a bad allocation, but it looks like this now:
fio: smalloc OOM
fio: filesetup.c:1495: dup_files: Assertion `0' failed.
Aborted
In fact the upper layers expected smalloc_strdup to retrun NULL on failure.
Signed-off-by: Christian Ehrhardt <ehrhardt@linux.vnet.ibm.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
|
|
Signed-off-by: Jens Axboe <axboe@fb.com>
|
|
There is an issue introduced with "commit 73df3e07 gettime: offset CPU cycle
counter by initial value". For architectures which define
ARCH_CPU_CLOCK_CYCLES_PER_USEC (currently only s390) this causes a build
error
gettime.c:174:11: error: ‘cycles_start’ undeclared (first use in this
function)
if (t < cycles_start && !cycles_wrap)
To make sure variables and code are only compiled in the same cases I
added a
clock definition called ARCH_CPU_CLOCK_WRAPS. We could merge
ARCH_CPU_CLOCK_WRAPS and the existing ARCH_CPU_CLOCK_CYCLES_PER_USEC
into one
if you prefer, so far nobody else uses it.
To avoid cluttering all architecture headers I enabled it by default in
arch-generic.h, so any arch not needing the wrap handling can undef
ARCH_CPU_CLOCK_WRAPS later in their headers.
Signed-off-by: Christian Ehrhardt <ehrhardt@linux.vnet.ibm.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
|
|
The following small patch to stat.c (using fio 2.2.4 from github)
outputs IOPS field in JSON format as a floating point number instead of
an integer. This improves accuracy in case where fio --client runs use
lots of threads with single-digit IOPS per thread. It seems to work,
here's a snippet of output from a short fio run with rate_iops=10 in the
job file.
"write" : {
"io_bytes" : 6464,
"bw" : 646,
"iops" : 10.10,
"runtime" : 10000,
Why the patch: IOPS number is rounded to integer in stats.c calls to
num2str(). This doesn't sound like much of a problem because in many
use cases, with large IOPS number the error is negligible. But in this
use case where we have many threads (we would like to get into the
thousands eventually), the IOPS/thread may be quite low and integer
rounding can introduce significant error. For example, if we are doing
5,000 IOPS over 1,000 threads, average throughput is 5 IOPS and
potential error is ~20%, but some threads could have much higher error
in IOPS because of integer format.
Signed-off-by: Jens Axboe <axboe@fb.com>
|
|
Bruce reports:
The latest code from git (built using clang) causes a segfault after printing the usage text when "./fio" is run:
[New LWP 100111]
No jobs(s) defined
fio-2.2.5-28-g93eeb
[usage text]
[New Thread 801c06400 (LWP 100111/fio)]
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 801c06400 (LWP 100111/fio)]
flist_empty (head=0x802000040) at flist.h:119
119 return head->next == head;
Current language: auto; currently minimal
(gdb) p head
$1 = (const struct flist_head *) 0x802000040
which is due to a bug in the filelock code, that uses
fio_mutex_remove() to remove the mutex. But that mutex is embedded
inside another mmap'ed region, hence we then segfault on later
deferencing pointers.
Signed-off-by: Jens Axboe <axboe@fb.com>
|
|
josn should be json, of course.
Signed-off-by: Jens Axboe <axboe@fb.com>
|
|
there's no fio_set_sched_idle in os/os-android.h. copy the one from
os/os-linux.h.
current Android also has posix_madvise.
Signed-off-by: Jens Axboe <axboe@fb.com>
|
|
Signed-off-by: Raphael Silva <raphael.philipe@ossystems.com.br>
Signed-off-by: Jens Axboe <axboe@fb.com>
|
|
Signed-off-by: Jens Axboe <axboe@fb.com>
|
|
Signed-off-by: Jens Axboe <axboe@fb.com>
|
|
Signed-off-by: Jens Axboe <axboe@fb.com>
|
|
The axmap_new() function implements an exit path using the label "err"
to free the alloced memory.
That cleanup code was cleaning all the sub malloc structures but not the
main structure (axmap) itself resulting in a memory leak of
sizeof(struct axmap) bytes.
This simple patch just free axmap at the end of the cleanup code.
|
|
If fread fails in iolog_file_inflate(), the current code was closing the
file descriptor and return 1. But it was missing freeing the previously
malloced buffer (buf).
This patch does add a memory free of 'buf' before returning to avoid the
memory leak.
|
|
Only intact blocks are verified; partially-overwritten blocks
are ignored
Signed-off-by: Justin Eno <jeno@micron.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
|
|
When blockalign is less than blocksize, random overwrite
workloads may partially overwrite blocks. This change
evicts partially-overwritten blocks from the iolog tree
so subsequent verification targets only intact blocks.
This change also allows verification with norandommap
and bsrange, though that is left disabled.
Signed-off-by: Justin Eno <jeno@micron.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
|
|
1G is a bit too tiny for most devices today, bump it to 10G.
Signed-off-by: Jens Axboe <axboe@fb.com>
|
|
Limiting the write phase of (random) overwrite workloads to 'size'
before the verify phase doesn't make sense, so allow them to write
up to io_limit. This better matches verify_only behavior, and
allows the [verify-job] below to succeed:
[global]
thread=1
direct=1
ioengine=sync
verify=meta
bs=1k
offset=0
size=5M
io_limit=6M
norandommap=1
verify_fatal=1
randseed=42
[write-job]
filename=datafile.tmp
rw=randwrite
do_verify=0
[verify-job]
stonewall
create_serialize=0
filename=datafile.tmp
rw=randwrite
do_verify=1
verify_only=1
Signed-off-by: Justin Eno <jeno@micron.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
|
|
This addresses a small nit that our compiler was complaining about.
Thanks!
Signed-off-by: Jens Axboe <axboe@fb.com>
|
|
When commands when requeued for the verify operation,
their start time was not reset, resulting in bogus latency graphs.
Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
Signed-off-by: Jens Axboe <axboe@fb.com>
|
|
Previous commit to backend.c tracks io_limit more closely by
counting submitted (in-flight) I/O instead of completed I/O.
do_dry_run() does not submit I/O, so its I/O is not counted,
and it loops forever.
Signed-off-by: Justin Eno <jeno@micron.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
|
|
I noticed that libnuma_v2 wasn't getting detected in our build
environment because we would get an error that mask was unused.
Signed-off-by: Jens Axboe <axboe@fb.com>
|
|
Signed-off-by: Jens Axboe <axboe@fb.com>
|
|
Signed-off-by: Jens Axboe <axboe@fb.com>
|
|
Signed-off-by: Jens Axboe <axboe@fb.com>
|
|
Signed-off-by: Jens Axboe <axboe@fb.com>
|
|
Signed-off-by: Jens Axboe <axboe@fb.com>
|
|
We can't just use memset(), some platforms have specific init/exit
routines for cpusets/masks.
Signed-off-by: Jens Axboe <axboe@fb.com>
|
|
Signed-off-by: Jens Axboe <axboe@fb.com>
|
|
|
|
Currently dedupe_percentage option does not work properly if
compress_percentage is not set. This can be easily demonstrated using
the following job file:
[job-/dev/dm-0]
filename=/dev/dm-0
rw=randwrite
blocksize=4096
direct=1
ioengine=libaio
iodepth=32
dedupe_percentage=50
time_based=1
runtime=5
numjobs=1
All writes will contain zeroes for the above job file.
The problem is in fill_io_buffer() function that switches dedupe random
state only if o->compress_percentage is set.
This patch updates the condition appropriately in fill_io_buffer()
appropriately.
Signed-off-by: Vasily Tarasov <tarasov@vasily.name>
Signed-off-by: Jens Axboe <axboe@fb.com>
|
|
fill_io_u() fails prematurely if the randomly-chosen offset satisfies
blockalign but not min_bs, i.e., the offset lies too near the end of
the target region. This change honors both parameters.
Signed-off-by: Justin Eno <jeno@micron.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
|
|
Signed-off-by: Jens Axboe <axboe@fb.com>
|
|
Signed-off-by: Jens Axboe <axboe@fb.com>
|
|
Signed-off-by: Jens Axboe <axboe@fb.com>
|
|
Signed-off-by: Jens Axboe <axboe@fb.com>
|
|
This causes a bunch of out-of-bounds accesses if you have really small buffer
sizes (i.e. 16 bytes will crash).
Signed-off-by: Steven Noonan <steven@uplinklabs.net>
Signed-off-by: Jens Axboe <axboe@fb.com>
|
|
Signed-off-by: Jens Axboe <axboe@fb.com>
|