Как я могу ограничить кэш-память, используемую при копировании, чтобы оставалась память для другого кеша?

Basic situation:

Я копирую некоторые NTFS диски в openSuSE. Каждый 2TB. Когда я делаю это, система работает медленно.

My guesses:

Я считаю, что это, вероятно, из-за кеширования. Linux решает отказаться от полезного кеша (например, kde4 bloat, дисков виртуальных машин, двоичных файлов LibreOffice, двоичных файлов Thunderbird и т. Д.) И вместо этого заполнить всю доступную память (всего 24 ГБ) данными с копирующих дисков, которые будут прочитаны только один раз, затем написано и никогда не используется снова. Таким образом, каждый раз, когда я использую эти приложения (или kde4), диск должен быть снова считан, а чтение раздува с диска снова приводит к зависанию / сбоям.

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

Поскольку это USB, диск и контроллер диска не являются узким местом, поэтому использование ionice не делает его быстрее.

Я полагаю, что это кеш, а не просто материнская плата, которая работает слишком медленно, потому что, если я перестану копировать все, она все равно будет работать нестабильно, пока не получит все заново. И если я возобновлю копирование, пройдет еще минута, прежде чем оно снова станет прерывистым. Но также я могу ограничить его до 40 МБ / с, и он снова будет работать быстрее (не потому, что он правильно кэшировал, а потому, что шины материнской платы имеют большую дополнительную пропускную способность для системных дисков). Я могу полностью смириться с потерей производительности из-за того, что возможности ввода-вывода моей материнской платы полностью израсходованы (что составляет 100% использования, что означает 0% потерянной мощности, что делает меня счастливым), но я не могу согласиться с тем, что этот механизм кэширования работает так ужасно в этом конкретный вариант использования.

<code># free
             total       used       free     shared    buffers     cached
Mem:      24731556   24531876     199680          0    8834056   12998916
-/+ buffers/cache:    2698904   22032652
Swap:      4194300      24764    4169536
</code>

Я также попробовал то же самое на Ubuntu, что вызывает полное зависание системы. ;)

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

Question:

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

Ответы на вопрос(7)

Ваш ответ на вопрос