Влияет ли раздача торрентов на кэширование оперативной памяти жесткого диска?

Влияет ли раздача торрентов на кэширование оперативной памяти жесткого диска?

Я скачал много торрент-файлов, и пока я их раздаю, я заметил, что очень часто, когда я запускаю браузер, он работает медленно, а индикатор активности жесткого диска включен. Обычно, когда я запускаю программу, она кэшируется в ОЗУ, и ее повторный запуск происходит очень быстро, и у меня 3 ГБ ОЗУ, поэтому обычно она остается кэшированной почти вечно. Но когда мой торрент-клиент раздает, кажется, что через час программы, которые я запускал, больше не кэшируются в ОЗУ.

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

Итак, мои вопросы - так ли я думаю, и если так, возможно ли в принципе предотвратить кэширование чтения с диска? Я могу попробовать отредактировать исходный код программы.

решение1

Это будет зависеть от того, какую именно торрент-программу вы используете. Некоторые из них могут вести себя по-разному.

Но да, обойти системный кэш можно, поскольку это распространенная проблема.

Если вам удобно редактировать исходный код (возможно, он должен быть на другом StackExchange..), найдите, где программа torrent открывает файл с диска. Скорее всего, это вызов open(). Если это fdopen(), то он использует stdlib, а я не уверен, что stdlib поддерживает прямой ввод-вывод.

Этот системный вызов принимает до трех аргументов, первый — имя файла, второй — флаги, третий — необязательная маска создания файла. Флаги, вероятно, будут примерно такими O_RDWRна данный момент. Флаг для «не использовать системный кэш» — O_DIRECT, и вы объединяете флаги, разделяя их с помощью |.

Таким образом, результатом аргумента flags в этом случае будет O_RDWR | O_DIRECT. Просто добавьте новый флаг.

Для получения более подробной информации см.

man 2 open

решение2

Не закрывайте браузер :)

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

Связанный контент