7

У нас есть система, которая преобразует набор из нескольких тысяч файлов размером в несколько МБ. После каждого шага преобразования он записывает промежуточный файл на диск. Концепция похожа на скретч-диск.

У нас есть высокопроизводительные диски SAS, работающие на RAID 6, но, поскольку ни ОЗУ, ни ЦП не берут много сил, я подозреваю, что одно из наших узких мест - это запись промежуточных файлов в каталог с нулями.

У нас много оперативной памяти в этих системах, и RHEL поставляется с рам-накопителем /dev /shm. В качестве быстрого теста я удалил каталог с нулями и поместил в него символическую ссылку на каталог на диске RAM. Производительность была такая же или чуть хуже? Как?

Разве обращение к диску для получения символической ссылки как-то сводит на нет выигрыш в производительности виртуального диска?

Я проверял это в некоторых сценариях, когда я знаю, что мы затронули более 10 ГБ данных (максимум java vm), и поэтому кеширование не должно происходить.

Что мне здесь не хватает?

1 ответ1

7

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

Как полное предположение, я думаю, что вы на самом деле ограничены архитектурой приложений. Вы говорите, что процессор не сильно бьется, но это, вероятно, означает, что ваше приложение слишком грубое, чтобы использовать большую часть ресурсов вашего процессора. Например, если ваш ЦП имеет 8 ядер, но ваша прикладная архитектура однопроцессорная, однопоточная, он может использовать только одно ядро.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .