Почему Linux записывает в область подкачки, даже если в системе есть доступное хранилище при копировании большого файла куда-нибудь?

Есть опция конфигурации services.logind.extraConfig .

Откройте файл конфигурации NixOS ( /etc/nixos/configuration.nix ). Назначьте строку «HandleLidSwitch = ignore» (или то, что вы обычно помещаете в /etc/systemd/logind.conf ) этой опции:

services.logind.extraConfig = "HandleLidSwitch=ignore";

2
07.04.2019, 11:30
2 ответа

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

В вашем случае я вижу, что ваш файл немного больше, чем ваша общая память, поэтому может случиться так, что файловый менеджер вашего графического интерфейса запрашивает полный общий mmapфайл вместо того, чтобы копировать его по частям.

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

3
27.01.2020, 22:08

Скорее всего, оперативная память используется для дискового -кеша. Кэш диска -не отображается на мониторе, который вы показываете. Затем ядро ​​может принять решение об обмене неактивной памяти вместо удаления кеша.

Если есть проблема с производительностью (, а не просто потенциальная проблема ), то есть способы заставить систему что-то сделать (, например. скопировать файл )без записи в кэш диска -. Это не замедлит запись, но замедлит -любое будущее чтение файла (, т. е. если вы скопируете файл, а затем прочитаете его ).

1
27.01.2020, 22:08

Теги

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