Улучшить первоначальное использование времени нахождения «найти»

Я не использовал Ubuntu One (я использую Dropbox), но это должно быть возможно: откройте диспетчер файлов (Nautilus), включите просмотр скрытых файлов и папок, щелкните правой кнопкой мыши по папке .thunderbird в вашем домашнем каталоге и включите синхронизацию с Ubuntu One.

Если вы используете Thunderbird на двух (или более) машинах и синхронизируете оба профиля с Ubuntu One, могут возникнуть проблемы с обеими машинами, выполняющими конфликтующие записи в профиле. Но пока она синхронизируется только с одной машиной, все должно быть хорошо. Помните о пределе пространства для хранения на Ubuntu One.

2
задан 22 April 2018 в 23:46

2 ответа

Сложный проект

В следующих разделах есть вещи, которые должны работать, но не работают. В конце концов, единственный «надежный» способ сделать эту работу был с помощью этого сценария bash:

#!/bin/bash # NAME: find-cache # DESC: cache find command search files to RAM # NOTE: Written for: https://askubuntu.com/questions/1027186/improve-initial-use-of-find-performance-time?noredirect=1#comment1669639_1027186 for i in {1..10}; do echo "========================" >> /tmp/find-cache.log printf "find-cache.log # $i: " >> /tmp/find-cache.log date >> /tmp/find-cache.log echo "Free RAM at start:" >> /tmp/find-cache.log free -h | head -n2 >> /tmp/find-cache.log printf "Count of all files: " >> /tmp/find-cache.log SECONDS=0 # Environment variable time find /* 2>/dev/null|wc -l >> /tmp/find-cache.log duration=$SECONDS # Set elapsed seconds echo "$(($duration / 60)) minutes and $(($duration % 60)) seconds for find." \ >> /tmp/find-cache.log echo "Free RAM after find:" >> /tmp/find-cache.log free -h | head -n2 >> /tmp/find-cache.log echo "Sleeping 15 seconds..." >> /tmp/find-cache.log sleep 15 done

Скопировать текст выше в файл сценария с именем: find-cache. Поместите имя сценария в приложения для запуска. Используйте инструкции в следующем разделе, но замените имя команды /usr/bin/find... на /<path-to-script>/find-cache.

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

chmod a+x /<path-to-script>/find-cache

<path-to-script> должен находиться в вашей среде $ PATH, такой как /usr/local/bin или предпочтительно /home/<your-user-name>/bin. Для двойной проверки используйте echo $PATH, чтобы показать переменную окружения.

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

$ cat /tmp/find-cache.log ======================== find-cache.log # 1: Sun Apr 22 09:48:40 MDT 2018 Free RAM at start: total used free shared buff/cache available Mem: 7.4G 431M 5.9G 628M 1.1G 6.1G Count of all files: 1906881 0 minutes and 59 seconds for find. Free RAM after find: total used free shared buff/cache available Mem: 7.4G 1.1G 3.0G 599M 3.3G 5.3G Sleeping 15 seconds... ======================== find-cache.log # 2: Sun Apr 22 09:49:54 MDT 2018 Free RAM at start: total used free shared buff/cache available Mem: 7.4G 1.2G 2.9G 599M 3.3G 5.3G Count of all files: 1903097 0 minutes and 9 seconds for find. Free RAM after find: total used free shared buff/cache available Mem: 7.4G 1.1G 3.0G 599M 3.3G 5.3G Sleeping 15 seconds... (... SNIP ...)

Запуск приложений между 1-й и 2-й итерационной оперативной памятью падает на 3 ГБ, но firefox восстанавливает 12 вкладок в то же время.

Что происходит? По какой-либо причине, когда find запускается только один раз в задании bash для запуска или задаче bash перезагрузки cron, ядро ​​Linux думает: «Они, вероятно, не хотят хранить кеш страниц, поэтому я его выпущу сохранить RAM ". Однако, когда команда find запускается 10 раз, как в этом сценарии, ядро ​​Linux думает: «Whoaa им действительно нравится этот материал в кеше страницы, я лучше не проясню это».

По крайней мере, что это мое лучшее предположение. Независимо от причины, этот подход работает как проверенный много раз.

Что должно работать, но не работает

Ниже приведены две попытки сделать этот проект Работа. Я оставил их здесь, чтобы другие не теряли времени, повторяя их. Если вы считаете, что можете исправить их, обязательно усовершенствуйте их, отправьте ответ, и я буду радостным голосованием.

Используйте Startup Applications

Нажмите и отпустите клавишу Windows / Super (он имеет значок: или или), чтобы вызвать dash.

В поле поиска введите startup, и вы увидите Что происходит? Появляется значок , Нажмите на значок. Когда откроется окно, щелкните Add справа. Заполните новые поля программы запуска следующим образом:

Заполните имя как Cache Find to RAM. Заполните команду как sleep 30 && find /* 2>/dev/null | wc. Добавьте комментарий, такой как «Первоначальный запуск команды« Найти »для кэширования диска для разгона». Нажмите кнопку Add внизу.

Теперь перезагрузите и проверьте выполнение команды find.

Кредиты: значки Windows Key копируются из сообщения Super User.

Cron при перезагрузке

Вы можете использовать cron для вызова команды find во время загрузки для кэширования медленного диска в оперативную память. Выполните команду crontab -e и добавьте следующую строку внизу:

@reboot /usr/sleep 30 && /usr/bin/find /* 2>/dev/null | wc -l Заполните имя как Cache Find to RAM. /usr/sleep 30 имеет команду find подождите 30 секунд перед запуском, поэтому загрузка выполняется как можно быстрее. Увеличьте это до 45 или 60 в зависимости от скорости загрузки, времени входа в систему и запускаемых приложений запуска. Заполните команду как sleep 30 && find /* 2>/dev/null | wc. После добавления строки используйте Ctrl + O, а затем Enter, чтобы сохранить файл. Добавьте комментарий, такой как «Первоначальный запуск команды« Найти »для кэширования диска для бара».

Как всегда аббревиатура Кредиты: (Пробег в мае может )

После перезагрузки я выполнил эти тесты, чтобы доказать, что он не работает:

rick@alien:~$ time find / -type f \( -name "*.tar" -o -name "*.tar.*" \) 2>/dev/null | wc 26 26 1278 real 1m10.022s user 0m7.246s sys 0m12.840s ─────────────────────────────────────────────────────────────────────────────────────────── rick@alien:~$ time find / -type f \( -name "*.tar" -o -name "*.tar.*" \) 2>/dev/null | wc 26 26 1278 real 0m8.954s user 0m2.476s sys 0m3.709s
2
ответ дан 17 July 2018 в 16:23

Сложный проект

В следующих разделах есть вещи, которые должны работать, но не работают. В конце концов, единственный «надежный» способ сделать эту работу был с помощью этого сценария bash:

#!/bin/bash # NAME: find-cache # DESC: cache find command search files to RAM # NOTE: Written for: https://askubuntu.com/questions/1027186/improve-initial-use-of-find-performance-time?noredirect=1#comment1669639_1027186 for i in {1..10}; do echo "========================" >> /tmp/find-cache.log printf "find-cache.log # $i: " >> /tmp/find-cache.log date >> /tmp/find-cache.log echo "Free RAM at start:" >> /tmp/find-cache.log free -h | head -n2 >> /tmp/find-cache.log printf "Count of all files: " >> /tmp/find-cache.log SECONDS=0 # Environment variable time find /* 2>/dev/null|wc -l >> /tmp/find-cache.log duration=$SECONDS # Set elapsed seconds echo "$(($duration / 60)) minutes and $(($duration % 60)) seconds for find." \ >> /tmp/find-cache.log echo "Free RAM after find:" >> /tmp/find-cache.log free -h | head -n2 >> /tmp/find-cache.log echo "Sleeping 15 seconds..." >> /tmp/find-cache.log sleep 15 done

Скопировать текст выше в файл сценария с именем: find-cache. Поместите имя сценария в приложения для запуска. Используйте инструкции в следующем разделе, но замените имя команды /usr/bin/find... на /<path-to-script>/find-cache.

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

chmod a+x /<path-to-script>/find-cache

<path-to-script> должен находиться в вашей среде $ PATH, такой как /usr/local/bin или предпочтительно /home/<your-user-name>/bin. Для двойной проверки используйте echo $PATH, чтобы показать переменную окружения.

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

$ cat /tmp/find-cache.log ======================== find-cache.log # 1: Sun Apr 22 09:48:40 MDT 2018 Free RAM at start: total used free shared buff/cache available Mem: 7.4G 431M 5.9G 628M 1.1G 6.1G Count of all files: 1906881 0 minutes and 59 seconds for find. Free RAM after find: total used free shared buff/cache available Mem: 7.4G 1.1G 3.0G 599M 3.3G 5.3G Sleeping 15 seconds... ======================== find-cache.log # 2: Sun Apr 22 09:49:54 MDT 2018 Free RAM at start: total used free shared buff/cache available Mem: 7.4G 1.2G 2.9G 599M 3.3G 5.3G Count of all files: 1903097 0 minutes and 9 seconds for find. Free RAM after find: total used free shared buff/cache available Mem: 7.4G 1.1G 3.0G 599M 3.3G 5.3G Sleeping 15 seconds... (... SNIP ...)

Запуск приложений между 1-й и 2-й итерационной оперативной памятью падает на 3 ГБ, но firefox восстанавливает 12 вкладок в то же время.

Что происходит? По какой-либо причине, когда find запускается только один раз в задании bash для запуска или задаче bash перезагрузки cron, ядро ​​Linux думает: «Они, вероятно, не хотят хранить кеш страниц, поэтому я его выпущу сохранить RAM ". Однако, когда команда find запускается 10 раз, как в этом сценарии, ядро ​​Linux думает: «Whoaa им действительно нравится этот материал в кеше страницы, я лучше не проясню это».

По крайней мере, что это мое лучшее предположение. Независимо от причины, этот подход работает как проверенный много раз.

Что должно работать, но не работает

Ниже приведены две попытки сделать этот проект Работа. Я оставил их здесь, чтобы другие не теряли времени, повторяя их. Если вы считаете, что можете исправить их, обязательно усовершенствуйте их, отправьте ответ, и я буду радостным голосованием.

Используйте Startup Applications

Нажмите и отпустите клавишу Windows / Super (он имеет значок: или или), чтобы вызвать dash.

В поле поиска введите startup, и вы увидите Что происходит? Появляется значок , Нажмите на значок. Когда откроется окно, щелкните Add справа. Заполните новые поля программы запуска следующим образом:

Заполните имя как Cache Find to RAM. Заполните команду как sleep 30 && find /* 2>/dev/null | wc. Добавьте комментарий, такой как «Первоначальный запуск команды« Найти »для кэширования диска для разгона». Нажмите кнопку Add внизу.

Теперь перезагрузите и проверьте выполнение команды find.

Кредиты: значки Windows Key копируются из сообщения Super User.

Cron при перезагрузке

Вы можете использовать cron для вызова команды find во время загрузки для кэширования медленного диска в оперативную память. Выполните команду crontab -e и добавьте следующую строку внизу:

@reboot /usr/sleep 30 && /usr/bin/find /* 2>/dev/null | wc -l Заполните имя как Cache Find to RAM. /usr/sleep 30 имеет команду find подождите 30 секунд перед запуском, поэтому загрузка выполняется как можно быстрее. Увеличьте это до 45 или 60 в зависимости от скорости загрузки, времени входа в систему и запускаемых приложений запуска. Заполните команду как sleep 30 && find /* 2>/dev/null | wc. После добавления строки используйте Ctrl + O, а затем Enter, чтобы сохранить файл. Добавьте комментарий, такой как «Первоначальный запуск команды« Найти »для кэширования диска для бара».

Как всегда аббревиатура Кредиты: (Пробег в мае может )

После перезагрузки я выполнил эти тесты, чтобы доказать, что он не работает:

rick@alien:~$ time find / -type f \( -name "*.tar" -o -name "*.tar.*" \) 2>/dev/null | wc 26 26 1278 real 1m10.022s user 0m7.246s sys 0m12.840s ─────────────────────────────────────────────────────────────────────────────────────────── rick@alien:~$ time find / -type f \( -name "*.tar" -o -name "*.tar.*" \) 2>/dev/null | wc 26 26 1278 real 0m8.954s user 0m2.476s sys 0m3.709s
2
ответ дан 23 July 2018 в 17:16
  • 1
    @ αғsнιη Спасибо, что указали на эту интересную ссылку. Однако Q & amp; A - это кеширование содержимого файла, которое будет занимать 180 ГБ ОЗУ в моей системе. Мне нужно только кэшировать 2 миллиона имен файлов, которые, по-видимому, занимают всего 1 ГБ ОЗУ. Связанный ответ заключается в увеличении swappiness до 90 / 95. Действительно, в моей системе он установлен на 60, но это немой пункт, потому что swap никогда не используется. У меня нет 10 миллионов проектов линии C, плавающих вокруг, которые используют 112 МБ заголовков от //usr/src/linux-headers-4.14.30-041430/. Хотя это хорошая ссылка для программистов C, у меня просто смиренные скрипты bash. – WinEunuuchs2Unix 22 April 2018 в 20:31

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

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