Превращение чтения Linux подкачивает назад в память

Команда, которую Вы ищете:

fstyp [-v] 

См. страницу справочника здесь

Для второй части: Если Вы изменяетесь в рассматриваемый каталог, можно сделать:

df .

Который скажет Вам точку монтирования и соответствующее устройство.

29
13.04.2017, 15:13
5 ответов

На основе программы memdump , первоначально найденной здесь , я создал сценарий для выборочного чтения указанных приложений обратно в память. запомните :

#!/bin/bash
declare -A Q
for i in "$@"; do
    E=$(readlink /proc/$i/exe);
    if [ -z "$E" ]; then.
        #echo skipped $i;.
        continue;.
    fi
    if echo $E | grep -qF memdump; then.
        #echo skipped $i >&2;.
        continue;.
    fi
    if [ -n "${Q[${E}]}" ]; then.
        #echo already $i >&2;.
        continue;.
    fi
    echo "$i $E" >&2
    memdump $i 2> /dev/null
    Q[$E]=$i
done | pv -c -i 2 > /dev/null

Использование: что-то вроде

# ./remember $(< /mnt/cgroup/tasks )
1 /sbin/init
882 /bin/bash
1301 /usr/bin/hexchat
...
2.21GiB 0:00:02 [ 1.1GiB/s] [  <=>     ]
...
6838 /sbin/agetty
11.6GiB 0:00:10 [1.16GiB/s] [      <=> ]
...
23.7GiB 0:00:38 [ 637MiB/s] [   <=>    ]
# 

Он быстро пропускает память без подкачки (гигабайт в секунду) и замедляется, когда требуется подкачка.

4
27.01.2020, 19:38

Это может помочь в / proc / sys / vm / кластер страниц (по умолчанию: 3).

Из документации ядра ( SYSCTL / VM.TXT ):

кластер страниц

кластера страницы контролирует количество страниц, к которым подряд Страницы читаются от свопа в одной попытке. Это своп Ассортимент к странице кэш ReadaHead. Упомянутая подсильница не с точки зрения виртуальных / физических адресов, но подряд на своп пространство - это означает, что они были заменены вместе.

Это логарифмическое значение - установка его в нулевое средство «1 страница», настройка Это до 1 означает «2 страницы», установив его до 2 означает «4 страницы» и т. Д. Ноль Отключает своп ReadaHead полностью.

Значение по умолчанию составляет три (восемь страниц за раз). Может быть некоторые Небольшие преимущества в настройке этого к другому значению, если ваша рабочая нагрузка Обменяемый.

Нижние значения означают более низкие задержки для начальных неисправностей, но в то же время Время дополнительные неисправности и задержки ввода / вывода для следующих неисправностей, если они будут были частью этих последовательных страниц ReadaHead привезли бы В.

Документация не упоминает ограничение, так что возможно, вы можете установить это абсурдно, чтобы все вскоре было прочитано. И, конечно же, верните его обратно в вменяемое значение потом.

11
27.01.2020, 19:38

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

Некоторые из их страниц, вероятно, все еще будут заменены, но оно может обойти свои проблемы с производительностью. Большая часть этого - это, вероятно, просто поведение «остановки и начления», когда многие страницы программы находятся в обмене, и программа должна постоянно пауза в порядке, чтобы поменять его страницы в ОЗУ, но только в 4K.

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

5
27.01.2020, 19:38

Мне кажется, что вы не можете волшебным образом "заставить систему снова реагировать". Вы либо берёте штраф, либо читаете страницы обратно из подкачки в память сейчас, либо берёте их позже, но так или иначе, вы берёте их обратно. Действительно, если вы делаете что-то вроде swapoff -a && swapon -a, то вы можете почувствовать больше боли, а не меньше, потому что вы заставляете некоторые страницы быть скопированы обратно в память, которая в противном случае никогда не была бы нужна снова, и в конце концов выпадает, не будучи прочитанным (подумайте: вы увольняетесь из приложения, в то время как большая часть его кучи выпадает; эти страницы могут быть полностью выкинуты, никогда не будучи прочитанными обратно в память).

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

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

Я думаю, что ваш трюк swapoff -a && swapon -a так же хорош, как и все, что вы могли придумать.

5
27.01.2020, 19:38

Здесь очень приятно обсудить http://rudd-o.com/en/linux-and-free-software/tales-from-responsivenessland-why-linux-feels-slow-and-how-to-fix-that. которая сводится к уменьшению подмены кода, с мыслью о том, что для увеличения воспринимаемой отзывчивости системы необходимо не допускать подмены кода (а именно так и происходит). На самом деле это не ответ на ваш вопрос, но это может предотвратить появление проблемы (ваши приложения просто не обмениваются, а только неиспользуемые данные и кэш страниц)

.
0
27.01.2020, 19:38

Теги

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