In linux-4.15, which is used as hwe-edge in xenial, there's an unexpected behavior. It results in latency spikes of generic_make_request() function call.
How to reproduce:
1. Run fio:
fio --name=test --rw=randwrite --direct=1 --filename=/dev/sdt --iodepth=1 --fsync=1 --ioengine=libaio --write_lat_log loglat
2. While fio is writing to the device, change nr_requests setting to the same value as current:
echo 256 > /sys/block/sdt/queue/nr_requests
or: if scheduler is already none:
echo none > /sys/block/sdt/queue/scheduler
3. Stop fio and check slat log:
...
3980, 16, 1, 4096
3999, 17, 1, 4096
4010, 19, 1, 4096
4020, 18, 1, 4096
4045, 10821, 1, 4096
4054, 25, 1, 4096
4070, 12, 1, 4096
4083, 17, 1, 4096
4094, 16, 1, 4096
4111, 17, 1, 4096
...
This behavior affects production systems, because every change uevent triggers udev to change settings prior to udev rules. Some software, for example arcconf (tool for managing adaptec HBA adapters) triggers uevents for every block device. So, every call to arcconf utility results in latency spike.
Could this be backported to 4.15 kernel for xenial/bionic?
Hi all,
In linux-4.15, which is used as hwe-edge in xenial, there's an unexpected behavior. It results in latency spikes of generic_ make_request( ) function call. sdt/queue/ nr_requests sdt/queue/ scheduler
How to reproduce:
1. Run fio:
fio --name=test --rw=randwrite --direct=1 --filename=/dev/sdt --iodepth=1 --fsync=1 --ioengine=libaio --write_lat_log loglat
2. While fio is writing to the device, change nr_requests setting to the same value as current:
echo 256 > /sys/block/
or: if scheduler is already none:
echo none > /sys/block/
3. Stop fio and check slat log:
...
3980, 16, 1, 4096
3999, 17, 1, 4096
4010, 19, 1, 4096
4020, 18, 1, 4096
4045, 10821, 1, 4096
4054, 25, 1, 4096
4070, 12, 1, 4096
4083, 17, 1, 4096
4094, 16, 1, 4096
4111, 17, 1, 4096
...
There're a few patches to fix this behavior: /git.kernel. org/pub/ scm/linux/ kernel/ git/axboe/ linux-block. git/commit/ ?h=for- 5.1/block& id=e5fa81408fb4 3ebabde65938ef8 b20ae879017e7 /git.kernel. org/pub/ scm/linux/ kernel/ git/axboe/ linux-block. git/commit/ ?h=for- 5.1/block& id=fbd72127c975 dc8e532ecc73d52 f3b1b00935bec
https:/
https:/
This behavior affects production systems, because every change uevent triggers udev to change settings prior to udev rules. Some software, for example arcconf (tool for managing adaptec HBA adapters) triggers uevents for every block device. So, every call to arcconf utility results in latency spike.
Could this be backported to 4.15 kernel for xenial/bionic?