Re: fio memory allocation problems

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2011-08-12 16:42, Jiri Horky wrote:
> Hi,
> 
> I think I found a bug. If the device (file) used in fio has "wrong" size, and is used with "wrong" block size, the fio fails to allocate memory for randommap.
> Following conditions must be true, considering just one thread for simplicity:
> 
>  1) number of blocks on the device are too big to fill in the default's pool
>  2) number of blocks on the device must be "right", so the size of newly allocated pool by smalloc.c:add_pool is exactly as big as requested size (there are some roundings in place, so not every size triggers this error)
> 
> When this is true, function smalloc.c:__smalloc_pool fails to use the newly created (exactly big enough) pool, because of this line:
> 
>                 idx = find_next_zero(pool->bitmap[i], last_idx);
> 
> which always returns non-zero value (the minimum returned value is last_idx +1), and so in our case the idx is 1 even though, the block number 0 is free. As the direct consequence, the function doesn't find enough free space in the given pool and returns NULL pointer. This leads to another try to allocate enough memory in smalloc.c:smalloc_real function, and so on...
> 
> The behavior could be reprocuded using both stable 1.57 and git version of the tool. The values that triggers the error are:
> init_random_map - real_file_size: 21999995584512, o.rw_min_bs: 4096, blocks: 5371092672, num_maps: 83923323, alloc size: 671386584
> 
> whereas this block device is fine:
> init_random_map - real_file_size: 19999995985920, o.rw_min_bs: 4096, blocks: 4882811520, num_maps: 76293930, alloc size: 610351440
> 
> the configuration file used:
> 
> [global]
> description=CESNET_test
> [cesnet]
> filename=/dev/sdd
> rw=randread
> size=10000g
> ioengine=libaio
> iodepth=4
> bs=4k
> runtime=10m
> time_based
> numjobs=1
> #norandommap
> group_reporting
> 
> 
> I am not sure I fully understand all the logic in smalloc.c so I am afraid I would break something with a trivial patch.
> 
> Let me know, if you need more information

That does indeed look like a bug in smalloc, bummer. I'll try and take a
look at it, if you do have a test patch you are using, please send it
along.

-- 
Jens Axboe

--
To unsubscribe from this list: send the line "unsubscribe fio" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Kernel]     [Linux SCSI]     [Linux IDE]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux