Flexible I/O Tester development
 help / color / mirror / Atom feed
* Bug with --buffer_compress_percentage
@ 2015-11-20 17:29 Matthew Eaton
  2015-11-20 17:33 ` Matthew Eaton
  2015-11-23 16:08 ` Jens Axboe
  0 siblings, 2 replies; 14+ messages in thread
From: Matthew Eaton @ 2015-11-20 17:29 UTC (permalink / raw)
  To: fio

I noticed that sometimes using --buffer_compress_percentage would not
result in the desired compression.  After running some tests I found
that only some block sizes are affected.

512b, 4K, 8K, 16K, and 32K seem to work as expected.

64K, 128K, 256K, 512K, and 1024K exhibited the bug.  I have not tested
beyond 1024K.

Here is the test script I used only changing block size for each test.

for i in {0..100}; do
  fio --name=test --rw=write --bs=128k --ioengine=libaio --direct=1
--iodepth=32 --size=512m --refill_buffers
--buffer_compress_percentage=$i --filename=testfile.$i --eta=never
--output=/dev/null
done

for i in {0..100}; do
  gzip -v testfile.$i &>> gzip.txt
done

rm *.gz

Below are compression results for 4K and then 128K.  For 128K, you can
see compression stops matching at around 50%.

bs=4k

testfile.0:      0.3% -- replaced with testfile.0.gz
testfile.1:      1.2% -- replaced with testfile.1.gz
testfile.2:      2.2% -- replaced with testfile.2.gz
testfile.3:      3.2% -- replaced with testfile.3.gz
testfile.4:      4.1% -- replaced with testfile.4.gz
testfile.5:      5.1% -- replaced with testfile.5.gz
testfile.6:      6.1% -- replaced with testfile.6.gz
testfile.7:      7.1% -- replaced with testfile.7.gz
testfile.8:      8.1% -- replaced with testfile.8.gz
testfile.9:      9.1% -- replaced with testfile.9.gz
testfile.10:     10.1% -- replaced with testfile.10.gz
testfile.11:     11.1% -- replaced with testfile.11.gz
testfile.12:     12.1% -- replaced with testfile.12.gz
testfile.13:     13.1% -- replaced with testfile.13.gz
testfile.14:     14.1% -- replaced with testfile.14.gz
testfile.15:     15.1% -- replaced with testfile.15.gz
testfile.16:     16.0% -- replaced with testfile.16.gz
testfile.17:     17.0% -- replaced with testfile.17.gz
testfile.18:     18.0% -- replaced with testfile.18.gz
testfile.19:     19.0% -- replaced with testfile.19.gz
testfile.20:     20.0% -- replaced with testfile.20.gz
testfile.21:     21.0% -- replaced with testfile.21.gz
testfile.22:     22.0% -- replaced with testfile.22.gz
testfile.23:     23.0% -- replaced with testfile.23.gz
testfile.24:     24.0% -- replaced with testfile.24.gz
testfile.25:     25.0% -- replaced with testfile.25.gz
testfile.26:     25.9% -- replaced with testfile.26.gz
testfile.27:     26.9% -- replaced with testfile.27.gz
testfile.28:     27.9% -- replaced with testfile.28.gz
testfile.29:     28.9% -- replaced with testfile.29.gz
testfile.30:     29.9% -- replaced with testfile.30.gz
testfile.31:     30.9% -- replaced with testfile.31.gz
testfile.32:     31.9% -- replaced with testfile.32.gz
testfile.33:     32.9% -- replaced with testfile.33.gz
testfile.34:     33.9% -- replaced with testfile.34.gz
testfile.35:     34.9% -- replaced with testfile.35.gz
testfile.36:     35.9% -- replaced with testfile.36.gz
testfile.37:     36.9% -- replaced with testfile.37.gz
testfile.38:     37.9% -- replaced with testfile.38.gz
testfile.39:     38.9% -- replaced with testfile.39.gz
testfile.40:     39.9% -- replaced with testfile.40.gz
testfile.41:     40.8% -- replaced with testfile.41.gz
testfile.42:     41.8% -- replaced with testfile.42.gz
testfile.43:     42.8% -- replaced with testfile.43.gz
testfile.44:     43.8% -- replaced with testfile.44.gz
testfile.45:     44.8% -- replaced with testfile.45.gz
testfile.46:     45.8% -- replaced with testfile.46.gz
testfile.47:     46.8% -- replaced with testfile.47.gz
testfile.48:     47.8% -- replaced with testfile.48.gz
testfile.49:     48.8% -- replaced with testfile.49.gz
testfile.50:     49.8% -- replaced with testfile.50.gz
testfile.51:     50.3% -- replaced with testfile.51.gz
testfile.52:     51.2% -- replaced with testfile.52.gz
testfile.53:     52.3% -- replaced with testfile.53.gz
testfile.54:     53.2% -- replaced with testfile.54.gz
testfile.55:     54.2% -- replaced with testfile.55.gz
testfile.56:     55.3% -- replaced with testfile.56.gz
testfile.57:     56.1% -- replaced with testfile.57.gz
testfile.58:     57.2% -- replaced with testfile.58.gz
testfile.59:     58.2% -- replaced with testfile.59.gz
testfile.60:     59.2% -- replaced with testfile.60.gz
testfile.61:     60.2% -- replaced with testfile.61.gz
testfile.62:     61.2% -- replaced with testfile.62.gz
testfile.63:     62.2% -- replaced with testfile.63.gz
testfile.64:     63.2% -- replaced with testfile.64.gz
testfile.65:     64.1% -- replaced with testfile.65.gz
testfile.66:     65.2% -- replaced with testfile.66.gz
testfile.67:     66.2% -- replaced with testfile.67.gz
testfile.68:     67.2% -- replaced with testfile.68.gz
testfile.69:     68.2% -- replaced with testfile.69.gz
testfile.70:     69.2% -- replaced with testfile.70.gz
testfile.71:     70.2% -- replaced with testfile.71.gz
testfile.72:     71.2% -- replaced with testfile.72.gz
testfile.73:     72.2% -- replaced with testfile.73.gz
testfile.74:     73.2% -- replaced with testfile.74.gz
testfile.75:     74.3% -- replaced with testfile.75.gz
testfile.76:     75.2% -- replaced with testfile.76.gz
testfile.77:     76.1% -- replaced with testfile.77.gz
testfile.78:     77.2% -- replaced with testfile.78.gz
testfile.79:     78.2% -- replaced with testfile.79.gz
testfile.80:     79.1% -- replaced with testfile.80.gz
testfile.81:     80.1% -- replaced with testfile.81.gz
testfile.82:     81.2% -- replaced with testfile.82.gz
testfile.83:     82.2% -- replaced with testfile.83.gz
testfile.84:     83.1% -- replaced with testfile.84.gz
testfile.85:     84.2% -- replaced with testfile.85.gz
testfile.86:     85.1% -- replaced with testfile.86.gz
testfile.87:     86.1% -- replaced with testfile.87.gz
testfile.88:     87.2% -- replaced with testfile.88.gz
testfile.89:     88.2% -- replaced with testfile.89.gz
testfile.90:     89.2% -- replaced with testfile.90.gz
testfile.91:     90.1% -- replaced with testfile.91.gz
testfile.92:     91.1% -- replaced with testfile.92.gz
testfile.93:     92.0% -- replaced with testfile.93.gz
testfile.94:     93.2% -- replaced with testfile.94.gz
testfile.95:     94.1% -- replaced with testfile.95.gz
testfile.96:     95.0% -- replaced with testfile.96.gz
testfile.97:     96.4% -- replaced with testfile.97.gz
testfile.98:     97.3% -- replaced with testfile.98.gz
testfile.99:     98.5% -- replaced with testfile.99.gz
testfile.100:     99.9% -- replaced with testfile.100.gz

bs=128k

testfile.0:      0.3% -- replaced with testfile.0.gz
testfile.1:      1.3% -- replaced with testfile.1.gz
testfile.2:      2.3% -- replaced with testfile.2.gz
testfile.3:      3.3% -- replaced with testfile.3.gz
testfile.4:      4.2% -- replaced with testfile.4.gz
testfile.5:      5.2% -- replaced with testfile.5.gz
testfile.6:      6.2% -- replaced with testfile.6.gz
testfile.7:      7.2% -- replaced with testfile.7.gz
testfile.8:      8.2% -- replaced with testfile.8.gz
testfile.9:      9.2% -- replaced with testfile.9.gz
testfile.10:     10.2% -- replaced with testfile.10.gz
testfile.11:     11.2% -- replaced with testfile.11.gz
testfile.12:     12.2% -- replaced with testfile.12.gz
testfile.13:     13.2% -- replaced with testfile.13.gz
testfile.14:     14.2% -- replaced with testfile.14.gz
testfile.15:     15.2% -- replaced with testfile.15.gz
testfile.16:     16.1% -- replaced with testfile.16.gz
testfile.17:     17.1% -- replaced with testfile.17.gz
testfile.18:     18.1% -- replaced with testfile.18.gz
testfile.19:     19.1% -- replaced with testfile.19.gz
testfile.20:     20.1% -- replaced with testfile.20.gz
testfile.21:     21.1% -- replaced with testfile.21.gz
testfile.22:     22.1% -- replaced with testfile.22.gz
testfile.23:     23.1% -- replaced with testfile.23.gz
testfile.24:     24.1% -- replaced with testfile.24.gz
testfile.25:     25.1% -- replaced with testfile.25.gz
testfile.26:     26.1% -- replaced with testfile.26.gz
testfile.27:     27.1% -- replaced with testfile.27.gz
testfile.28:     28.1% -- replaced with testfile.28.gz
testfile.29:     29.1% -- replaced with testfile.29.gz
testfile.30:     30.0% -- replaced with testfile.30.gz
testfile.31:     31.0% -- replaced with testfile.31.gz
testfile.32:     32.0% -- replaced with testfile.32.gz
testfile.33:     33.0% -- replaced with testfile.33.gz
testfile.34:     34.0% -- replaced with testfile.34.gz
testfile.35:     35.0% -- replaced with testfile.35.gz
testfile.36:     36.0% -- replaced with testfile.36.gz
testfile.37:     37.0% -- replaced with testfile.37.gz
testfile.38:     38.0% -- replaced with testfile.38.gz
testfile.39:     39.0% -- replaced with testfile.39.gz
testfile.40:     40.0% -- replaced with testfile.40.gz
testfile.41:     41.0% -- replaced with testfile.41.gz
testfile.42:     42.0% -- replaced with testfile.42.gz
testfile.43:     43.0% -- replaced with testfile.43.gz
testfile.44:     44.0% -- replaced with testfile.44.gz
testfile.45:     45.0% -- replaced with testfile.45.gz
testfile.46:     46.0% -- replaced with testfile.46.gz
testfile.47:     47.0% -- replaced with testfile.47.gz
testfile.48:     47.9% -- replaced with testfile.48.gz
testfile.49:     48.9% -- replaced with testfile.49.gz
testfile.50:     49.9% -- replaced with testfile.50.gz
testfile.51:     48.9% -- replaced with testfile.51.gz
testfile.52:     47.9% -- replaced with testfile.52.gz
testfile.53:     47.0% -- replaced with testfile.53.gz
testfile.54:     46.0% -- replaced with testfile.54.gz
testfile.55:     45.0% -- replaced with testfile.55.gz
testfile.56:     44.0% -- replaced with testfile.56.gz
testfile.57:     43.0% -- replaced with testfile.57.gz
testfile.58:     42.0% -- replaced with testfile.58.gz
testfile.59:     41.0% -- replaced with testfile.59.gz
testfile.60:     40.0% -- replaced with testfile.60.gz
testfile.61:     39.0% -- replaced with testfile.61.gz
testfile.62:     38.0% -- replaced with testfile.62.gz
testfile.63:     37.0% -- replaced with testfile.63.gz
testfile.64:     36.0% -- replaced with testfile.64.gz
testfile.65:     35.0% -- replaced with testfile.65.gz
testfile.66:     34.0% -- replaced with testfile.66.gz
testfile.67:     34.0% -- replaced with testfile.67.gz
testfile.68:     36.0% -- replaced with testfile.68.gz
testfile.69:     38.0% -- replaced with testfile.69.gz
testfile.70:     40.0% -- replaced with testfile.70.gz
testfile.71:     42.0% -- replaced with testfile.71.gz
testfile.72:     43.9% -- replaced with testfile.72.gz
testfile.73:     45.9% -- replaced with testfile.73.gz
testfile.74:     47.9% -- replaced with testfile.74.gz
testfile.75:     49.9% -- replaced with testfile.75.gz
testfile.76:     47.9% -- replaced with testfile.76.gz
testfile.77:     45.9% -- replaced with testfile.77.gz
testfile.78:     43.9% -- replaced with testfile.78.gz
testfile.79:     41.9% -- replaced with testfile.79.gz
testfile.80:     40.0% -- replaced with testfile.80.gz
testfile.81:     42.9% -- replaced with testfile.81.gz
testfile.82:     45.9% -- replaced with testfile.82.gz
testfile.83:     48.9% -- replaced with testfile.83.gz
testfile.84:     47.9% -- replaced with testfile.84.gz
testfile.85:     44.9% -- replaced with testfile.85.gz
testfile.86:     43.9% -- replaced with testfile.86.gz
testfile.87:     47.9% -- replaced with testfile.87.gz
testfile.88:     87.4% -- replaced with testfile.88.gz
testfile.89:     88.4% -- replaced with testfile.89.gz
testfile.90:     89.4% -- replaced with testfile.90.gz
testfile.91:     90.4% -- replaced with testfile.91.gz
testfile.92:     91.4% -- replaced with testfile.92.gz
testfile.93:     92.4% -- replaced with testfile.93.gz
testfile.94:     93.4% -- replaced with testfile.94.gz
testfile.95:     94.4% -- replaced with testfile.95.gz
testfile.96:     95.4% -- replaced with testfile.96.gz
testfile.97:     96.4% -- replaced with testfile.97.gz
testfile.98:     97.4% -- replaced with testfile.98.gz
testfile.99:     98.4% -- replaced with testfile.99.gz
testfile.100:     99.9% -- replaced with testfile.100.gz

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Bug with --buffer_compress_percentage
  2015-11-20 17:29 Bug with --buffer_compress_percentage Matthew Eaton
@ 2015-11-20 17:33 ` Matthew Eaton
  2015-11-23 16:08 ` Jens Axboe
  1 sibling, 0 replies; 14+ messages in thread
From: Matthew Eaton @ 2015-11-20 17:33 UTC (permalink / raw)
  To: fio

On Fri, Nov 20, 2015 at 9:29 AM, Matthew Eaton <m.eaton82@gmail.com> wrote:
> I noticed that sometimes using --buffer_compress_percentage would not
> result in the desired compression.  After running some tests I found
> that only some block sizes are affected.

Forgot to mention my fio version is: fio-2.2.11-17-gd883ef

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Bug with --buffer_compress_percentage
  2015-11-20 17:29 Bug with --buffer_compress_percentage Matthew Eaton
  2015-11-20 17:33 ` Matthew Eaton
@ 2015-11-23 16:08 ` Jens Axboe
  2015-11-23 16:16   ` Jens Axboe
  1 sibling, 1 reply; 14+ messages in thread
From: Jens Axboe @ 2015-11-23 16:08 UTC (permalink / raw)
  To: Matthew Eaton, fio

On 11/20/2015 10:29 AM, Matthew Eaton wrote:
> I noticed that sometimes using --buffer_compress_percentage would not
> result in the desired compression.  After running some tests I found
> that only some block sizes are affected.
>
> 512b, 4K, 8K, 16K, and 32K seem to work as expected.
>
> 64K, 128K, 256K, 512K, and 1024K exhibited the bug.  I have not tested
> beyond 1024K.
>
> Here is the test script I used only changing block size for each test.
>
> for i in {0..100}; do
>    fio --name=test --rw=write --bs=128k --ioengine=libaio --direct=1
> --iodepth=32 --size=512m --refill_buffers
> --buffer_compress_percentage=$i --filename=testfile.$i --eta=never
> --output=/dev/null
> done
>
> for i in {0..100}; do
>    gzip -v testfile.$i &>> gzip.txt
> done
>
> rm *.gz
>
> Below are compression results for 4K and then 128K.  For 128K, you can
> see compression stops matching at around 50%.

I think this is an artifact of how gzip compression works, it doesn't 
have an unlimited size window. It's 32k, iirc. Fio should fill so that 
it ideally would compress to the given size with an ideal compression 
algorithm.

You'd probably want to use buffer_compress_chunk=x to always force fio 
to operate in sizes of that for compression, if you want to ensure that 
gzip would be able to compress to the specified ratio. I do think we 
have a loop missing though for that to do what you need, let me test 
that and report back.

-- 
Jens Axboe



^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Bug with --buffer_compress_percentage
  2015-11-23 16:08 ` Jens Axboe
@ 2015-11-23 16:16   ` Jens Axboe
  2015-11-23 22:15     ` Matthew Eaton
  0 siblings, 1 reply; 14+ messages in thread
From: Jens Axboe @ 2015-11-23 16:16 UTC (permalink / raw)
  To: Matthew Eaton, fio

[-- Attachment #1: Type: text/plain, Size: 1786 bytes --]

On 11/23/2015 09:08 AM, Jens Axboe wrote:
> On 11/20/2015 10:29 AM, Matthew Eaton wrote:
>> I noticed that sometimes using --buffer_compress_percentage would not
>> result in the desired compression.  After running some tests I found
>> that only some block sizes are affected.
>>
>> 512b, 4K, 8K, 16K, and 32K seem to work as expected.
>>
>> 64K, 128K, 256K, 512K, and 1024K exhibited the bug.  I have not tested
>> beyond 1024K.
>>
>> Here is the test script I used only changing block size for each test.
>>
>> for i in {0..100}; do
>>    fio --name=test --rw=write --bs=128k --ioengine=libaio --direct=1
>> --iodepth=32 --size=512m --refill_buffers
>> --buffer_compress_percentage=$i --filename=testfile.$i --eta=never
>> --output=/dev/null
>> done
>>
>> for i in {0..100}; do
>>    gzip -v testfile.$i &>> gzip.txt
>> done
>>
>> rm *.gz
>>
>> Below are compression results for 4K and then 128K.  For 128K, you can
>> see compression stops matching at around 50%.
>
> I think this is an artifact of how gzip compression works, it doesn't
> have an unlimited size window. It's 32k, iirc. Fio should fill so that
> it ideally would compress to the given size with an ideal compression
> algorithm.
>
> You'd probably want to use buffer_compress_chunk=x to always force fio
> to operate in sizes of that for compression, if you want to ensure that
> gzip would be able to compress to the specified ratio. I do think we
> have a loop missing though for that to do what you need, let me test
> that and report back.

I think things should work for all sizes, if you add this patch and then 
add buffer_compress_chunk=32k or similar to your job file. You can do 
that for smaller block sizes as well, fio will use the minimum of that 
chunk size or the write block size.

-- 
Jens Axboe


[-- Attachment #2: big-chunk-compress.patch --]
[-- Type: text/x-patch, Size: 1303 bytes --]

diff --git a/io_u.c b/io_u.c
index 6b6b47d0a1e1..b1aa4141cdbc 100644
--- a/io_u.c
+++ b/io_u.c
@@ -1919,6 +1919,7 @@ void fill_io_buffer(struct thread_data *td, void *buf, unsigned int min_write,
 		unsigned int perc = td->o.compress_percentage;
 		struct frand_state *rs;
 		unsigned int left = max_bs;
+		unsigned int this_write;
 
 		do {
 			rs = get_buf_state(td);
@@ -1926,20 +1927,21 @@ void fill_io_buffer(struct thread_data *td, void *buf, unsigned int min_write,
 			min_write = min(min_write, left);
 
 			if (perc) {
-				unsigned int seg = min_write;
-
-				seg = min(min_write, td->o.compress_chunk);
-				if (!seg)
-					seg = min_write;
-
-				fill_random_buf_percentage(rs, buf, perc, seg,
-					min_write, o->buffer_pattern,
-						   o->buffer_pattern_bytes);
-			} else
+				this_write = min(min_write, td->o.compress_chunk);
+				if (!this_write)
+					this_write = min_write;
+
+				fill_random_buf_percentage(rs, buf, perc,
+					this_write, this_write,
+					o->buffer_pattern,
+					o->buffer_pattern_bytes);
+			} else {
 				fill_random_buf(rs, buf, min_write);
+				this_write = min_write;
+			}
 
-			buf += min_write;
-			left -= min_write;
+			buf += this_write;
+			left -= this_write;
 			save_buf_state(td, rs);
 		} while (left);
 	} else if (o->buffer_pattern_bytes)

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* Re: Bug with --buffer_compress_percentage
  2015-11-23 16:16   ` Jens Axboe
@ 2015-11-23 22:15     ` Matthew Eaton
  2015-11-24  3:13       ` Jens Axboe
  0 siblings, 1 reply; 14+ messages in thread
From: Matthew Eaton @ 2015-11-23 22:15 UTC (permalink / raw)
  To: Jens Axboe; +Cc: fio

>> I think this is an artifact of how gzip compression works, it doesn't
>> have an unlimited size window. It's 32k, iirc. Fio should fill so that
>> it ideally would compress to the given size with an ideal compression
>> algorithm.
>>
>> You'd probably want to use buffer_compress_chunk=x to always force fio
>> to operate in sizes of that for compression, if you want to ensure that
>> gzip would be able to compress to the specified ratio. I do think we
>> have a loop missing though for that to do what you need, let me test
>> that and report back.
>
>
> I think things should work for all sizes, if you add this patch and then add
> buffer_compress_chunk=32k or similar to your job file. You can do that for
> smaller block sizes as well, fio will use the minimum of that chunk size or
> the write block size.
>
> --
> Jens Axboe
>

Applied the patch and added buffer_compress_chunk=32k and now it's
working for all block sizes. Thank you for the info and the patch!


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Bug with --buffer_compress_percentage
  2015-11-23 22:15     ` Matthew Eaton
@ 2015-11-24  3:13       ` Jens Axboe
  2015-11-25 17:16         ` Matthew Eaton
  0 siblings, 1 reply; 14+ messages in thread
From: Jens Axboe @ 2015-11-24  3:13 UTC (permalink / raw)
  To: Matthew Eaton; +Cc: fio

On 11/23/2015 03:15 PM, Matthew Eaton wrote:
>>> I think this is an artifact of how gzip compression works, it doesn't
>>> have an unlimited size window. It's 32k, iirc. Fio should fill so that
>>> it ideally would compress to the given size with an ideal compression
>>> algorithm.
>>>
>>> You'd probably want to use buffer_compress_chunk=x to always force fio
>>> to operate in sizes of that for compression, if you want to ensure that
>>> gzip would be able to compress to the specified ratio. I do think we
>>> have a loop missing though for that to do what you need, let me test
>>> that and report back.
>>
>>
>> I think things should work for all sizes, if you add this patch and then add
>> buffer_compress_chunk=32k or similar to your job file. You can do that for
>> smaller block sizes as well, fio will use the minimum of that chunk size or
>> the write block size.
>>
>> --
>> Jens Axboe
>>
>
> Applied the patch and added buffer_compress_chunk=32k and now it's
> working for all block sizes. Thank you for the info and the patch!

Perfect, thanks for reporting and followup testing.

-- 
Jens Axboe



^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Bug with --buffer_compress_percentage
  2015-11-24  3:13       ` Jens Axboe
@ 2015-11-25 17:16         ` Matthew Eaton
  2015-11-25 17:29           ` Jens Axboe
  0 siblings, 1 reply; 14+ messages in thread
From: Matthew Eaton @ 2015-11-25 17:16 UTC (permalink / raw)
  To: Jens Axboe; +Cc: fio

> Perfect, thanks for reporting and followup testing.
>
> --
> Jens Axboe

Unfortunately I am having an issue with buffer_compress_chunk in the
2.2.12 release.  Removing buffer_compress_chunk from the tests below
fixes the issues.

fio --name=test --rw=write --bs=4k --ioengine=libaio --direct=1
--iodepth=32 --size=1g --refill_buffers
--buffer_compress_percentage=50 --buffer_compress_chunk=32k
--filename=testfile
test: (g=0): rw=write, bs=4K-4K/4K-4K/4K-4K, ioengine=libaio, iodepth=32
fio-2.2.12
Starting 1 process
fio: pid=24516, got signal=11


Run status group 0 (all jobs):

Disk stats (read/write):
  sda: ios=0/0, merge=0/0, ticks=0/0, in_queue=0, util=0.00%
fio: file hash not empty on exit


fio --name=test --rw=write --bs=128k --ioengine=libaio --direct=1
--iodepth=32 --size=1g --refill_buffers
--buffer_compress_percentage=50 --buffer_compress_chunk=32k
--filename=testfile
test: (g=0): rw=write, bs=128K-128K/128K-128K/128K-128K,
ioengine=libaio, iodepth=32
fio-2.2.12
Starting 1 process
Segmentation fault (core dumped)


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Bug with --buffer_compress_percentage
  2015-11-25 17:16         ` Matthew Eaton
@ 2015-11-25 17:29           ` Jens Axboe
  2015-11-26  0:55             ` Matthew Eaton
  0 siblings, 1 reply; 14+ messages in thread
From: Jens Axboe @ 2015-11-25 17:29 UTC (permalink / raw)
  To: Matthew Eaton; +Cc: fio

On 11/25/2015 10:16 AM, Matthew Eaton wrote:
>> Perfect, thanks for reporting and followup testing.
>>
>> --
>> Jens Axboe
>
> Unfortunately I am having an issue with buffer_compress_chunk in the
> 2.2.12 release.  Removing buffer_compress_chunk from the tests below
> fixes the issues.
>
> fio --name=test --rw=write --bs=4k --ioengine=libaio --direct=1
> --iodepth=32 --size=1g --refill_buffers
> --buffer_compress_percentage=50 --buffer_compress_chunk=32k
> --filename=testfile
> test: (g=0): rw=write, bs=4K-4K/4K-4K/4K-4K, ioengine=libaio, iodepth=32
> fio-2.2.12
> Starting 1 process
> fio: pid=24516, got signal=11
>
>
> Run status group 0 (all jobs):
>
> Disk stats (read/write):
>    sda: ios=0/0, merge=0/0, ticks=0/0, in_queue=0, util=0.00%
> fio: file hash not empty on exit
>
>
> fio --name=test --rw=write --bs=128k --ioengine=libaio --direct=1
> --iodepth=32 --size=1g --refill_buffers
> --buffer_compress_percentage=50 --buffer_compress_chunk=32k
> --filename=testfile
> test: (g=0): rw=write, bs=128K-128K/128K-128K/128K-128K,
> ioengine=libaio, iodepth=32
> fio-2.2.12
> Starting 1 process
> Segmentation fault (core dumped)

That's odd, I can't reproduce that. Could this just be a bad build? Fio 
sometimes fails to rebuild correctly between version. Does it persist 
across a make clean && make?


-- 
Jens Axboe



^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Bug with --buffer_compress_percentage
  2015-11-25 17:29           ` Jens Axboe
@ 2015-11-26  0:55             ` Matthew Eaton
  2015-11-26  4:26               ` Jens Axboe
  0 siblings, 1 reply; 14+ messages in thread
From: Matthew Eaton @ 2015-11-26  0:55 UTC (permalink / raw)
  To: Jens Axboe; +Cc: fio

> That's odd, I can't reproduce that. Could this just be a bad build? Fio
> sometimes fails to rebuild correctly between version. Does it persist across
> a make clean && make?
>
>
> --
> Jens Axboe
>

Weird!  I will look into this again on Monday when I am back at work.


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Bug with --buffer_compress_percentage
  2015-11-26  0:55             ` Matthew Eaton
@ 2015-11-26  4:26               ` Jens Axboe
  2015-11-30 21:17                 ` Matthew Eaton
  0 siblings, 1 reply; 14+ messages in thread
From: Jens Axboe @ 2015-11-26  4:26 UTC (permalink / raw)
  To: Matthew Eaton; +Cc: fio

On 11/25/2015 05:55 PM, Matthew Eaton wrote:
>> That's odd, I can't reproduce that. Could this just be a bad build? Fio
>> sometimes fails to rebuild correctly between version. Does it persist across
>> a make clean && make?
>>
>>
>> --
>> Jens Axboe
>>
>
> Weird!  I will look into this again on Monday when I am back at work.

I think I found and fixed the main issue why the rebuild issue would 
happen, init.c didn't get the right dependencies. Hopefully a make clean 
won't be needed going forward.

I still think that is your issue, I don't see any problems with the 
buffer filling. So do let me know when you test on Monday, thanks.

-- 
Jens Axboe



^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Bug with --buffer_compress_percentage
  2015-11-26  4:26               ` Jens Axboe
@ 2015-11-30 21:17                 ` Matthew Eaton
  2015-11-30 21:20                   ` Jens Axboe
  0 siblings, 1 reply; 14+ messages in thread
From: Matthew Eaton @ 2015-11-30 21:17 UTC (permalink / raw)
  To: Jens Axboe; +Cc: fio

> I think I found and fixed the main issue why the rebuild issue would happen,
> init.c didn't get the right dependencies. Hopefully a make clean won't be
> needed going forward.
>
> I still think that is your issue, I don't see any problems with the buffer
> filling. So do let me know when you test on Monday, thanks.
>
> --
> Jens Axboe
>

I tested again trying a make clean as well as a fresh clone from git
but I could still reproduce.  This system is Ubuntu 14.04, so for
kicks I moved to a completely different system and installed Fedora 23
and fio from git, but had the same problem!

This is my configure output.  Could I be missing something?

Operating system              Linux
CPU                           x86_64
Big endian                    no
Compiler                      gcc
Cross compile                 no

Static build                  no
Wordsize                      64
zlib                          yes
Linux AIO support             yes
POSIX AIO support             yes
POSIX AIO support needs -lrt  yes
POSIX AIO fsync               yes
Solaris AIO support           no
__sync_fetch_and_add          yes
libverbs                      yes
rdmacm                        yes
Linux fallocate               yes
POSIX fadvise                 yes
POSIX fallocate               yes
sched_setaffinity(3 arg)      yes
sched_setaffinity(2 arg)      no
clock_gettime                 yes
CLOCK_MONOTONIC               yes
CLOCK_MONOTONIC_RAW           yes
CLOCK_MONOTONIC_PRECISE       no
gettimeofday                  yes
fdatasync                     yes
sync_file_range               yes
EXT4 move extent              yes
Linux splice(2)               yes
GUASI                         no
Fusion-io atomic engine       no
libnuma                       no
strsep                        yes
strcasestr                    yes
strlcat                       no
getopt_long_only()            yes
inet_aton                     yes
socklen_t                     yes
__thread                      yes
RUSAGE_THREAD                 yes
SCHED_IDLE                    yes
TCP_NODELAY                   yes
Net engine window_size        yes
TCP_MAXSEG                    yes
RLIMIT_MEMLOCK                yes
pwritev/preadv                yes
IPv6 helpers                  yes
Rados Block Device engine     no
setvbuf                       yes
Gluster API engine            no
s390_z196_facilities          no
HDFS engine                   no
MTD                           yes
lex/yacc for arithmetic       no
getmntent                     yes
getmntinfo                    no
Static Assert                 yes


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Bug with --buffer_compress_percentage
  2015-11-30 21:17                 ` Matthew Eaton
@ 2015-11-30 21:20                   ` Jens Axboe
  2015-11-30 21:30                     ` Jens Axboe
  0 siblings, 1 reply; 14+ messages in thread
From: Jens Axboe @ 2015-11-30 21:20 UTC (permalink / raw)
  To: Matthew Eaton; +Cc: fio

On 11/30/2015 02:17 PM, Matthew Eaton wrote:
>> I think I found and fixed the main issue why the rebuild issue would happen,
>> init.c didn't get the right dependencies. Hopefully a make clean won't be
>> needed going forward.
>>
>> I still think that is your issue, I don't see any problems with the buffer
>> filling. So do let me know when you test on Monday, thanks.
>>
>> --
>> Jens Axboe
>>
>
> I tested again trying a make clean as well as a fresh clone from git
> but I could still reproduce.  This system is Ubuntu 14.04, so for
> kicks I moved to a completely different system and installed Fedora 23
> and fio from git, but had the same problem!
>
> This is my configure output.  Could I be missing something?

Nope, that part should not matter. I'm probably wrong, then. I'll try 
and reproduce!

BTW, the rebuild bug should hopefully be fixed, so I can trust reports 
like this more in the future.


-- 
Jens Axboe



^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Bug with --buffer_compress_percentage
  2015-11-30 21:20                   ` Jens Axboe
@ 2015-11-30 21:30                     ` Jens Axboe
  2015-11-30 22:02                       ` Matthew Eaton
  0 siblings, 1 reply; 14+ messages in thread
From: Jens Axboe @ 2015-11-30 21:30 UTC (permalink / raw)
  To: Matthew Eaton; +Cc: fio

On 11/30/2015 02:20 PM, Jens Axboe wrote:
> On 11/30/2015 02:17 PM, Matthew Eaton wrote:
>>> I think I found and fixed the main issue why the rebuild issue would
>>> happen,
>>> init.c didn't get the right dependencies. Hopefully a make clean
>>> won't be
>>> needed going forward.
>>>
>>> I still think that is your issue, I don't see any problems with the
>>> buffer
>>> filling. So do let me know when you test on Monday, thanks.
>>>
>>> --
>>> Jens Axboe
>>>
>>
>> I tested again trying a make clean as well as a fresh clone from git
>> but I could still reproduce.  This system is Ubuntu 14.04, so for
>> kicks I moved to a completely different system and installed Fedora 23
>> and fio from git, but had the same problem!
>>
>> This is my configure output.  Could I be missing something?
>
> Nope, that part should not matter. I'm probably wrong, then. I'll try
> and reproduce!

Try current -git, I think I found it.

-- 
Jens Axboe



^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Bug with --buffer_compress_percentage
  2015-11-30 21:30                     ` Jens Axboe
@ 2015-11-30 22:02                       ` Matthew Eaton
  0 siblings, 0 replies; 14+ messages in thread
From: Matthew Eaton @ 2015-11-30 22:02 UTC (permalink / raw)
  To: Jens Axboe; +Cc: fio

> Try current -git, I think I found it.
>
> --
> Jens Axboe
>

That did the trick!  Thanks again!


^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2015-11-30 22:02 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-11-20 17:29 Bug with --buffer_compress_percentage Matthew Eaton
2015-11-20 17:33 ` Matthew Eaton
2015-11-23 16:08 ` Jens Axboe
2015-11-23 16:16   ` Jens Axboe
2015-11-23 22:15     ` Matthew Eaton
2015-11-24  3:13       ` Jens Axboe
2015-11-25 17:16         ` Matthew Eaton
2015-11-25 17:29           ` Jens Axboe
2015-11-26  0:55             ` Matthew Eaton
2015-11-26  4:26               ` Jens Axboe
2015-11-30 21:17                 ` Matthew Eaton
2015-11-30 21:20                   ` Jens Axboe
2015-11-30 21:30                     ` Jens Axboe
2015-11-30 22:02                       ` Matthew Eaton

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox