Comment 0 for bug 1815733

Aleksei (zakharov-a-g) wrote :

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.
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
  ...

There're a few patches to fix this behavior:
https://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git/commit/?h=for-5.1/block&id=e5fa81408fb43ebabde65938ef8b20ae879017e7
https://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git/commit/?h=for-5.1/block&id=fbd72127c975dc8e532ecc73d52f3b1b00935bec

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?