Mount / usr в ОЗУ (загрузка с жесткого диска при запуске и сохранение при выключении)

diff -qr {DIR1} {DIR2} выполняет все файлы в обоих каталогах.

q показывает только отличия r делает рекурсивным. Оставьте это, если вам это не нужно

Вы не можете напрямую указать diff использовать подстановочные знаки, но вы можете добавить:

-x PAT  --exclude=PAT
    Exclude files that match PAT.

-X FILE    --exclude-from=FILE
   Exclude files that match any pattern in FILE.

, чтобы исключить файлы. Поэтому, если вы хотите только *.cpp, самым простым способом является создание текстового файла, который содержит все файлы, которые не являются *.cpp.

4
задан 12 May 2012 в 04:41

2 ответа

Это возможно, но бессмысленно. Ядро хранит кэш данных с диска в ОЗУ. Данные, которые вы использовали совсем недавно, хранятся в ОЗУ. Естественно, вы получите части /usr, которые вы часто используете в ОЗУ, а части, которые вы не используете, не будут занимать какую-либо ОЗУ.

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

cat /path/to/file >/dev/null

Например, чтобы предварительно загрузить все исполняемые файлы и библиотеки в ОЗУ:

cat /bin/* /lib/* /usr/bin/* /usr/lib/* >/dev/null

Это может занять некоторое время, поэтому вы должны сделать это в фоновом режиме. Вы можете поместить в /etc/rc.local следующую команду:

ionice -c 3 cat /bin/* /lib/* /usr/bin/* /usr/lib/* >/dev/null &

Чтобы также загружать все библиотеки в подкаталоги /usr/lib*, было бы полезно запустить find:

ionice -c 3 find /bin /usr/bin /usr/lib* -type f -exec ionice -c 3 cat '{}' ';' > /dev/null &
7
ответ дан 25 May 2018 в 11:32
  • 1
    Хамм, хороший подход, +1. Но ... насколько велик кеш ядра в установке Ubuntu по умолчанию? Является ли он фиксированным или масштабируется с доступной оперативной памятью? В любом случае (или точкой), чтобы установить его более крупным (или более агрессивным), как в «эй», см., Что 12 ГБ бесплатно? Не стесняйтесь, возьмите 8 ГБ для вас! & Quot ;? – MestreLion 12 May 2012 в 07:09
  • 2
    @MestreLion Кэш использует всю оперативную память. Единственная настройка - «не стесняйтесь, возьмите всю доступную память». То, что вы можете настроить, - относительная склонность к обмену памятью приложений, а также к сохранению большего объема кеша диска (/proc/sys/vm/swappiness), но это относится только к системам с относительно небольшим количеством ОЗУ для того, для чего они используются. – Gilles 12 May 2012 в 07:18
  • 3
  • 4
    @ssokolow Я думаю, что ответ будет включать в себя группы. Но это не обязательно приведет к лучшему опыту пользователя: у вас будет немного быстрее, но другие вещи будут медленнее. – Gilles 20 July 2014 в 18:33
  • 5
    @Gilles Кроме того, когда я запускаю четыре или пять виртуальных виртуальных машин параллельно для тестирования или я запускаю утечку памяти, мой объем памяти никогда не поднимается выше примерно 6GiB из моего 16GiB ОЗУ. Я просто хочу удостовериться, что вещи, такие как vim, gVim, Leafpad, urxvt + bash и urxvt + zsh всегда начинаются через секунду. Прикрепление их и их зависимости не должны использовать много оперативной памяти. – ssokolow 21 July 2014 в 14:37
ionice -c 3 cat /bin/* /lib/* /usr/bin/* /usr/lib/* >/dev/null &

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

ionice -c 3 find /bin /usr/bin /usr/lib* -type f -exec cat '{}' ';' > /dev/null &

Все, что он производит, идет в / dev / null, так что ничто вас не раздражает.

Я думаю, что оба ионика необходимы, потому что find выполняет команды в собственном процессе , Пожалуйста, поправьте меня, если я ошибаюсь. (Похоже, я был неправ.)

Эта строка в rc.local должна выполнить трюк с уже выбранным ответом.

[edit] удалил вторую «иониту», как это предложено в комментарий.

2
ответ дан 25 May 2018 в 11:32
  • 1
    Не нужно использовать ионизацию дважды. Процессы наследуют свой приоритет от своих родителей. Процессы детей настолько распространены в ОС Unixy, что все остальное будет неэффективным. Попробуйте это, и вы увидите, что я имею в виду: ionice -c 3 find /bin -exec ionice \; | uniq (Вторая ионика без аргументов просто задает приоритет, установленный в настоящее время) – ssokolow 20 July 2014 в 10:36

Другие вопросы по тегам:

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