Рейтинг:1

Что мне говорят результаты временной оболочки Linux, что произошло с этой командой cp?

флаг in

Мой взгляд на этот вопрос со стороны разработчика. Я пишу код, который размещается на виртуальной машине RHEL, работающей как одна из многих в корпоративной системе. Используемая файловая система представляет собой удаленное сетевое запоминающее устройство.

У нас была большая изменчивость простых команд во время пакетной обработки. Итак, мы устроили тест, чтобы получить больше информации, но теперь я не знаю, что мы нашли.

Мы запускали следующую команду каждые 30 минут и записывали вывод. Это копия файла размером 6 ГБ. То, что я вижу, - это скачок прошедшего времени с 11 секунд до 190 секунд, когда система занята выполнением большого количества заданий, и эта тестовая команда получает низкое время процессора.

Что я вижу, так это то, что столбец «I» (входы файловой системы) заполняется, когда ЦП низкий, но не когда он высокий. Колонка «w» (непроизвольные свопы) тоже намного выше.

Мой вопрос: что происходит с этим заданием/командой, из-за чего оно работает НАМНОГО ДОЛЬШЕ, когда время ЦП снижается? Сохраняет ли подкачка все эти данные на каком-то другом устройстве, которое намного медленнее? Что вообще происходит во время свопинга входа/выхода?

Выполняется команда:

/usr/bin/time -a -o имя_файла.txt cp file.txt fileCopy.txt
Датировать Время е С U п с ш я О
3/14/2022 5:19:02 64.9 16.23 1.03 26% 3005 29210 12000016 12000000
3/14/2022 5:49:02 12.7 11.63 0.79 97% 2069 76 0 12000000
3/14/2022 6:19:02 100.39 14.74 0.78 15% 1034 29925 12000136 12000000
3/14/2022 6:49:24 191.32 18.86 0.94 10% 3374 36164 12001024 12000000
3/14/2022 7:19:02 71.61 15.61 0.88 23% 1610 30316 12000296 12000000
3/14/2022 7:49:02 70.73 17.5 0.91 26% 1408 29540 12000072 12000000
3/14/2022 8:19:02 10.95 9.89 0.7 96% 1709 75 0 12000000
3/14/2022 8:49:02 11.01 10.22 0.73 99% 239 85 0 12000000

Описания столбцов со страницы руководства для /usr/bin/time

e Прошедшее реальное время (в секундах).
S Общее количество процессорных секунд, затраченных процессом в режиме ядра.
U Общее количество процессорных секунд, затраченных процессом в пользовательском режиме.
P Процент ЦП, полученный этим заданием, вычисляется как (%U + %S) / %E.
c Количество раз, когда процесс непроизвольно переключался на контекст (из-за истечения интервала времени).
w Количество ожиданий: количество раз, когда программа добровольно переключала контекст, например, во время ожидания завершения операции ввода-вывода.
I Количество вводов файловой системы процессом.
O Количество файловых систем, выводимых процессом.
Рейтинг:1
флаг cn

P в этом контексте означает отношение времени ЦП, полученного этим заданием, к общему затраченному времени. Почти 100% означает, что почти все время он был на ЦП, и поэтому ЦП был ограничен для этих прогонов. В отличие от других прогонов, где что-то еще было ограничивающим фактором. Больше системного времени (так называемого ядра), чем системного времени, что типично для тяжелых задач ввода-вывода.

Учитывая, что рабочая нагрузка заключалась в копировании файла размером 6 ГБ, мы можем сделать вывод, что 11-секундные прогоны в среднем составляют более 0,5 ГБ операций записи в секунду. Столбец O каждый раз подтверждает одно и то же количество операций записи в соответствии с процессом простого копирования одного файла.

Однако столбец ввода имеет серьезные колебания. Медленные прогоны имеют примерно одинаковое чтение и запись. Но быстрые прогоны не делают никаких чтений! Я предполагаю, что файл все еще кэшируется в ОЗУ с момента его последнего чтения. DRAM намного быстрее, чем даже твердотельные накопители. Что является большим приростом скорости, пока из-за нехватки памяти ОС не удалит кэшированные данные и не будет вынуждена снова читать из медленного хранилища.

Итак, это 200-секундная задача, которая иногда может занимать 12 секунд. Вероятно, из-за кеша страниц Linux.


Поиск первопричины проблем с производительностью часто требует более глубокого понимания системы в целом, помимо какого-либо конкретного набора показателей.

Используемая файловая система представляет собой удаленное сетевое запоминающее устройство.

Обратите внимание, что ваша копия находится в сетевом хранилище, поэтому это также может быть что угодно в удаленной системе или в сети между ними. Производительность удаленного хранилища. Скорость и использование сети (вероятно, IP). Или это может быть локально для этой виртуальной машины, где гость конкурирует за ресурсы со всем остальным, работающим в вашей инфраструктуре.

Всегда можно углубиться в то, как все работает.Имеет ли вообще значение сетевое хранилище (NFS?), или вы также видите это для локального диска? На самом деле 0,7 секунды пользовательского процессорного времени — это довольно много работы, сколько стоит учет для управления многими системными вызовами? Что на самом деле означает занятость ЦП, когда большая часть этого ожидает медленную память и очень медленное хранилище? Непростые вопросы, на которые нужно ответить, однако, возможно, нет необходимости копать слишком глубоко, когда все работает адекватно.

Orion Red avatar
флаг in
«Я предполагаю, что файл все еще кэшируется в ОЗУ с момента его последнего чтения». - Это имеет смысл, когда я действительно сижу и смотрю на ситуацию в целом.Это также может привести меня к способу исправить этот конкретный скачок во времени обработки. Это свинья в ситуации с Python, когда мы получаем массивный 16-гигабайтный файл, шифруем/сжимаем его для последующего использования, а затем расшифровываем/расширяем его при необходимости. ПОТОМ сортируем. Другие соответствующие файлы имеют размер менее 800 МБ, поэтому я мог бы выполнить эти шаги один за другим и устранить необходимость в таком количестве операций.
Orion Red avatar
флаг in
Как бы вы хотели, чтобы вас отметили, когда я поднимусь по цепочке?
John Mahowald avatar
флаг cn
Возможно, расшифровка и обработка могут происходить в конвейере, если возможен потоковый доступ, но возможно и нет. Или просто кинуть на проблему память и быстрое хранилище. Что касается атрибуции, мое имя и ссылка на это типичны для лицензии CC BY-SA для всех материалов Stack Exchange https://stackoverflow.com/help/licensing. Возможно, у вас не будет возможности адаптировать и поделиться, но если, скажем, вы когда-либо писали в инженерном блоге об интерпретации скромной команды времени, лицензия требует указания авторства.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.