Nginx disk io проблема

Я объясню это с другой точки зрения.

Если честно, bc имеет преимущество, так как ему не нужно ничего читать с диска и нужны только его blob/binaries, в то время как python должен импортировать ряд модулей + читать файл. Поэтому ваш тест может быть смещен в сторону bc. Чтобы действительно проверить это, вы должны использовать bc -q file, где file содержит:

6^6^6
quit

Изменив только то, что изменено время использования echo:

bc  0.33s user 0.00s system 80% cpu 0.414 total

К использованию файла:

bc -q some  0.33s user 0.00s system 86% cpu 0.385 total

(вам придется использовать метод Тердона, чтобы заметить большие различия, но по крайней мере мы знаем, что они есть)

Теперь, с точки зрения python, python должен читать с диска, компилировать и выполнять каждый раз файл, плюс загружать модули как точки Andrew, что делает время выполнения медленнее. Если вы скомпилируете байт-код скрипта python, то заметите, что на выполнение кода уходит на 50% меньше общего времени:

python some.py > /dev/null  0.25s user 0.01s system 63% cpu 0.413 total

compiled:

./some.pyc  0.22s user 0.00s system 77% cpu 0.282 total

Как видите, есть несколько факторов, которые могут повлиять на время выполнения между различными инструментами.

2
01.03.2019, 09:30
1 ответ

Когда впервые появились твердотельные накопители, существовало распространенное заблуждение, что твердотельные накопители всегда быстрее жестких дисков. Это было совсем не так — даже в те времена с жестким диском можно было легко сделать 125+ МБ/с, единственным требованием было выполнение последовательного чтения или записи. Напротив, последовательная запись на исходные твердотельные накопители часто была медленнее, и скорость чтения также часто не впечатляла.

Короче говоря, :ваш dd тестирует последовательную пропускную способность, тогда как ваш nginx использует произвольный доступ. Жесткие диски имеют очень ограниченную емкость для операций случайного поиска, порядка значительно менее 100 операций в секунду для диска 7,2 тыс. об/мин любого поколения(по сравнению с более чем 10 тыс. IOPS в современных твердотельных накопителях ), что значительно ограничивает общую пропускную способность, если вы зависите от произвольного доступа к файловой системе для своей работы. В настоящее время 100 IOPS настолько медленны, что если бы жесткие диски были «изобретены» сегодня, они, вероятно, были бы отвергнуты как оторванные от реальности.

Поскольку вы обслуживаете видео, где последовательный доступ к большим -файлам встречается чаще, чем в других веб-приложениях, ваши показатели реальной -пропускной способности уже не так уж плохи — 59,96 МБ/с в реальном -жизнь, когда последовательный бенчмарк показывает 117 МБ/с, уже впечатляет. Решение может состоять в том, чтобы перейти на большее количество жестких дисков, использовать жесткие диски с более высокой скоростью вращения для увеличения количества операций ввода-вывода в минуту или перейти на твердотельный накопитель.

0
27.01.2020, 22:27

Теги

Похожие вопросы