Почему Linux не кеширует объекты и / или ".so" файлы при использовании GNU Linker? - PullRequest
3 голосов
/ 20 марта 2019

При связывании исполняемых файлов (более 200) в большом проекте я получаю скорость соединения 0,5 исполняемых файлов в секунду, даже если я запускал этап связывания за минуту до этого.vmstat показывает скорость чтения диска более 20 МБ / с.

Но если я предварительно кэширую каталог сборки, используя "tar cf / dev / null build-dir" один раз, я получаю согласованную скорость соединения 4,8 исполняемых файлов в секундуи скорость чтения диска в основном равна нулю.

Почему Linux не кэширует объектные файлы и / или файлы ".so", когда они читаются GNU Linker, а делает это, когда они читаются tar?Существует много оперативной памяти (16 ГБ).Версия ядра - 4.4.146.CentOS 7.5.

1 Ответ

1 голос
/ 26 марта 2019

Похоже, неправильное значение vm.vfs_cache_pressure = 1000 вызывало это неправильное поведение. Установка его на 70 устранила проблему и восстановила хорошую производительность кеша.

И документация явно рекомендует не увеличивать значение выше 100. К сожалению, в Интернете полно примеров с безумными значениями, такими как 1000.

...