Это для zsh, не колотят, к вашему сведению (если Вы не использовали его, Вы не будете сожалеть, что испытали его). Это действительно полезно для того, чтобы быстро вывести длинные тракты для передач scp. Это работает точно так же, как использование, чтобы завершить или перечислить доступные имена файлов/каталоги.
Пример
scp webdev@example.com:/home/webdev/domains/example.com/http.public/long<tab>
завершит путь к /home/webdev/domains/example.com/http.public/longdirname
.
Я плох в примерах, но это должно дать Вам идею. Испытайте его, это может действительно сохранить Вас пальцы от ввода.
# SSH Completion
zstyle ':completion:*:scp:*' tag-order \
files users 'hosts:-host hosts:-domain:domain hosts:-ipaddr"IP\ Address *'
zstyle ':completion:*:scp:*' group-order \
files all-files users hosts-domain hosts-host hosts-ipaddr
zstyle ':completion:*:ssh:*' tag-order \
users 'hosts:-host hosts:-domain:domain hosts:-ipaddr"IP\ Address *'
zstyle ':completion:*:ssh:*' group-order \
hosts-domain hosts-host users hosts-ipaddr
zstyle '*' single-ignored show
Отключение подкачки не сделает то, что Вы хотите. Вы все еще получите сильную пропускную способность ввода-вывода, но это будет иметь чистые страницы, а не грязные.
Без подкачки система сожмет кэш чистых (неизмененных) страниц к почти нулю, потому что это - единственные страницы, которые это может выселить из физической памяти. Это может только выселить грязные (измененные) страницы из памяти путем записи им для свопинга без подкачки, это не имеет никакого способа выселить грязные страницы.
Поскольку Вы испытываете нехватку физической памяти, каждый процесс должен будет загрузить свои кодовые страницы из диска, поскольку это выселяет предыдущие кодовые страницы процесса. Результатом будет сильная перегрузка и чрезмерная работа, сделанная подсистемой подкачки.
Это - особый случай очень важного принципа: Для хорошо разработанной системы Вы не можете заставить его работать лучше путем сокращения ее выбора. Linux является хорошо разработанной системой. Удаление подкачки просто дает ему меньше вариантов, таким образом, не удивительно, что это ведет себя хуже.
Чтобы удостовериться, что подкачка не используется, Вы были бы более обеспеченным предотвращением любой подкачки, добавляемой при начальной загрузке. Это может быть сделано, в зависимости от системы путем отключения swap
обслуживание начальной загрузки или просто комментирование записи подкачки в /etc/fstab
.
Насколько Ваше зависание затронуто, stop()
функция в /etc/init.d/swap
мог бы дать ключ к разгадке:
stop()
{
ebegin "Deactivating swap devices"
# Try to unmount all tmpfs filesystems not in use, else a deadlock may
# occure. As $RC_SVCDIR may also be tmpfs we cd to it to lock it
cd "$RC_SVCDIR"
umount -a -t tmpfs 2>/dev/null
case "$RC_UNAME" in
NetBSD|OpenBSD) swapctl -U -t noblk >/dev/null;;
*) swapoff -a >/dev/null;;
esac
eend 0
}
Заметьте часть о мертвой блокировке. Можно попытаться делать umount -a -t tmpfs
самостоятельно перед выключением подкачки.
Править:
Вероятно, Вы могли бы также достигнуть своей цели путем изменения sysctl
настройки (см. этот вопрос).
swap
в init.d
, и при этом у меня нет его на fstab
, но я действительно имею /etc/init.d/mountoverflowtmp
это монтируется tmpfs
для чрезвычайных записей журнала. Делает использование демона подкачки tmpfs
также?
– syockit
15.11.2011, 13:58
grep -RF swap /etc/
если Вы хотите найти его. Но отключать сервис, Вы использовали бы команду как service
(IIRC; я не использую Debian сам).
– rozcietrzewiacz
15.11.2011, 14:02
tmpfs
, потому что tmpfs
в оперативной памяти (RAM) файловая система. Но другие сервисы/программы то использование tmpfs
мог бы полагаться загружают специальный способ. Я действительно не знаю, но это могло бы иметь некоторое отношение к кэшированию или специальному пути в который tmpfs
драйвер требует доступа к области подкачки.
– rozcietrzewiacz
15.11.2011, 14:04
swapoff
, и через vm.swappiness=0
. Все же kswapd0
все еще выполнения! Интересно, является ли это регрессией от средств кошки …
– syockit
15.11.2011, 17:36
Лучшее решение, чем выключение подкачки, которая в лучшем случае заставит вероятностные процессы быть уничтоженными, когда память кончится, состоит в том, чтобы установить предел сегмента данных для каждого процесса для процессов, которые вытягивают материал от сети. Таким образом, безудержный браузер поразит предел и умрет, а не заставит целую систему становиться неприменимой. Пример, от оболочки
(ulimit -d 400000; firefox) &
Число после-d находится в килобайтах. Необходимо экспериментировать с этим в системе для выбора оптимального значения для привычек просмотра. Круглые скобки заставляют подоболочку быть созданной; ulimit управляют только влиянием, которое окружает и его дети, изолируя его эффекты от родительской оболочки.
chromium
процессы с помощью маленьких блоков памяти?
– jberryman
25.06.2015, 19:37
Лучше прокомментировать, загружают запись раздела /etc/fstab
чем выполнение swapoff -a
после каждой начальной загрузки.
У меня есть та же проблема с kswapd0 на моих аппаратных средствах.
Настройка vm.swappiness
системный параметр не помогает для меня.
sysctl -w vm.swappiness=0
Я погуглил, и прочитайте много сообщений, списков рассылки, и теперь я думаю, что это - ошибка ядра.
Когда нет никакого активного раздела подкачки, и свободная память становится менее затем некоторым порогом (приблизительно 300 МБ в моем случае), система становится безразличной из-за kswapd0 безумия.
Вероятно, это воспроизводится со специальной конфигурацией и условиями.
Для кого-то это решено системной переустановкой с повторным разделением для других путем создания пользовательского ядра с kswapd0
отключенный.
В моей системе (debian sid 2016-11-15) я сделал это:
отключить подкачку сейчас:
swapoff -a
Комментарий строки с разделом подкачки в /etc/fstab
#### #UUID=c6ddbc95-3bb5-49e1-ab25-b1c505e5360c нет подкачки sw 0 0
Отключите монтирование подкачки в systemd:
systemctl --type swap
systemctl остановить dev-sda6.swap
маска systemctl dev-sda6.swap
Этого было бы достаточно. Ссылка на своп есть в файле /etc/initramfs-tools/conf.d/resume
. Я не знаю, какова цель этого. Возможно, этот файл будет проблемой при следующей перезагрузке (я пока не пытаюсь перезагрузиться, мое время безотказной работы драгоценно ;)).
the computer hangs with violent I/O throughput in the background. iotop reveals kswapd0 to be the culprit
Пока что я нашел один способ ()избежать этого. Если вы хотите протестировать его и посмотреть, как он работает в вашей системе, см. исправление ядра внутри этого вопроса . По сути, он не вытесняет Active(file)
страниц (, по крайней мере, )при нехватке памяти, поэтому перегрузка диска (постоянное чтение )сводится почти к нулю, а убийце OOM -разрешено запускаться в течение 1 секунды, вместо того, чтобы заморозить ОС на время, которое кажется постоянным (или, по крайней мере, на много минут ). Я надеюсь, что настоящие программисты (, которыми я не являюсь ), улучшат патч и превратят его в реальное решение, теперь, когда они видят, что то, что он делает, работает для этих ситуаций.
cat /proc/meminfo
на любом типичном поле Linux после нескольких часов загрузки. – David Schwartz 15.11.2011, 20:43