OS X имеет три проблемы, которые способствуют этому:
По умолчанию любые данные, записываемые или считываемые с диска, кэшируются в ОЗУ с более высоким приоритетом, чем последние программные данные. Приложения могут отключить это для каждого дескриптора с помощью опции F_NOCACHE
для fcntl()
, но немногие делают. В результате большое количество дисковой активности приводит к тому, что память, которая не используется в тот самый момент, будет заменена. Это создает большую активность на диске как для выгрузки, так и для считывания этой памяти через несколько мгновений поверх первоначальной активности на диске.
HFS+ плохо обрабатывает одновременный доступ к файлам. В частности, одновременное открытие и закрытие множества различных файлов приводит к огромному конфликту, и в одно и то же время может происходить только одна операция открытия / закрытия.
Многие приложения OS X распределяют доступ к диску по множеству маленьких файлов.
В результате, когда два или более приложений пытаются получить доступ ко многим файлам одновременно, нагрузка дискового ввода-вывода возрастает экспоненциально, поскольку активность подкачки конкурирует с приложениями для ввода-вывода.
Отключение динамического пейджера может помешать раннему этапу этой экспоненциальной кривой, исключив возможность помещать частные / грязные страницы приложения на диск. Вместо этого система, скорее всего, будет очищать страницы от общедоступных / чистых сопоставленных файлов (исполняемых файлов, библиотек и т.д.) И от данных кэшированных файлов, которые, вероятно, не следовало кэшировать в первую очередь. Будет ли это на самом деле улучшать производительность, будет сильно зависеть от того, какие приложения вы используете. Например, Safari крайне плохо относится к управлению дисковым вводом-выводом, поэтому я думаю, что это поможет.
Проблема может возникнуть, если объем оперативной памяти на самом деле превышает доступный объем: сбой паники - очень резкий способ завершить ваш день. Но если вы не редактируете большие файлы или иным образом не делаете объемных операций, связанных с памятью, это может быть достаточно редким, чтобы рассмотреть риск.
Кстати, вы можете использовать команду lsof
чтобы увидеть, какие файлы открываются какими процессами, и команду fs_usage
чтобы увидеть текущий журнал файловых операций. Оба работают лучше при запуске от имени пользователя root или через sudo
.