2

При написании кода на Python я очень часто сохраняю файлы (у меня довольно высокая частота code->test->code->test->... ). Я ненавижу, когда Linux синхронизирует мои изменения на диске каждый раз, когда я делаю запись.

Как настроить Linux так, чтобы он сохранял записи файлов в памяти в течение определенного периода времени / количества записей?

Чтобы сделать это полезным, конечно, чтение файлов, которые еще не были синхронизированы, должно осуществляться из памяти (чтобы интерпретатор Python всегда видел самое последнее содержимое). Дополнительные кредиты для background-fsyncing, который не блокирует другие операции записи / чтения одновременно :-)

1 ответ1

4

Обычно Linux всегда кэширует записи на диск в течение некоторого времени, но это зависит от параметров монтирования файловой системы. Убедитесь, что файловая система смонтирована в async режиме, проверив findmnt или /proc/mounts mounts .

  • Хорошо: /dev/sda4 /home btrfs rw,relatime 0 0
  • Плохо: /dev/sda4 /home btrfs rw,sync,relatime 0 0

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

mount -o remount,async /home

(Замените /home фактическим корнем файловой системы - возможно, просто / в настройке с одним разделом.)


Чаще всего, однако, дополнительное fsyncing выполняется вашим текстовым редактором - в частности, Vim делает это как для реального файла, так и для файла подкачки. Используйте опции fsync и swapsync в vimrc для управления им:

set nofsync swapsync=

Для Emacs вы можете установить write-region-inhibit-fsync.


В этой статье описывается поведение Linux fsync() в Firefox, а также упоминается, что ext3 (не ext4) может вызывать очень длительные задержки, когда файловая система монтируется в режиме data=ordered :

В некоторых довольно распространенных конфигурациях Linux, особенно при использовании файловой системы ext3 в режиме « data=ordered », вызов fsync не просто сбрасывает данные для вызываемого файла, а скорее для всех буферизованных данных для этой файловой системы.

Если вы используете ext3 в этом режиме, рассмотрите возможность его отключения.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .