Большой размер ввода-вывода и задержки на SSD во время Elasticsearch OpenIndex
Я провожу тест для Elasticsearch на SSD. Один из сценариев - протестировать OpenIndex размером ~5 ГБ. Это занимает около 1 секунды на индекс (что, как мне кажется, слишком медленно для SSD). При наблюдении за этим с помощью https://github.com/brendangregg/perf-tools/blob/master/iosnoop: мы обнаружили значительное количество больших операций ввода-вывода с высокими задержками, например:
STARTs ENDs COMM PID TYPE DEV BLOCK BYTES LATms
270762.058155 270762.070424 java 4876 R 8,16 86507520 516096 12.27
270762.058221 270762.071750 java 4876 R 8,16 86508528 516096 13.53
270762.058293 270762.072666 java 4876 R 8,16 86509536 516096 14.37
270762.058353 270762.073593 java 4876 R 8,16 86510544 516096 15.24
270762.058410 270762.074456 java 4876 R 8,16 86511552 516096 16.05
270762.058467 270762.075358 java 4876 R 8,16 86512560 516096 16.89
270762.058525 270762.076251 java 4876 R 8,16 86513568 516096 17.73
но при трассировке с помощью strace сообщаемый максимальный размер составляет всего около 20 КБ, а максимальное время системного вызова составляет всего около 4 мс (что звучит правильно для SSD). Что я здесь пропустил? любой способ предотвратить высокий блок IO (или что может быть причиной этого?)
Дополнительная информация: мы запускаем https://github.com/brendangregg/perf-tools/blob/master/iolatency и также обнаружили, что довольно много операций укладываются в интервал задержки от 16 мс до 64 мс https://pastebin.com/PdJGVm38