Основная ситуация:
Я копирую некоторые диски NTFS в openSuSE. Каждый из них составляет 2 ТБ. Когда я это делаю, система работает медленно.
Мои предположения:
Я считаю, что это, скорее всего, связано с кэшированием. Linux решает отказаться от полезного кеша (например, kde4 bloat, виртуальных машин, двоичных файлов LibreOffice, двоичных файлов Thunderbird и т.д.) И вместо этого заполнить всю доступную память (всего 24 ГБ) материалами из копирующих дисков, которые будут прочитаны только один раз, затем пишется и никогда не используется снова. Таким образом, в любое время, когда я использую эти приложения (или kde4), диск должен быть снова прочитан, а чтение раздувания с диска снова заставляет замораживать/икать.
Из-за исчезновения кэша и того факта, что эти раздутые приложения нуждаются в большом количестве кеша, это делает систему ужасно медленной.
Так как это USB, контроллер диска и диска не является узким местом, поэтому использование ионитов не ускоряет работу.
Я считаю, что кеш, а не только материнская плата идет слишком медленно, потому что, если я прекращу все копирование, она по-прежнему работает прерывисто, пока она не перескакивает все. И если я перезапущу копирование, это займет минуту, прежде чем он снова портится. Но также я могу ограничить его примерно до 40 Мбайт/с, и он работает быстрее (не потому, что он имеет правильные вещи в кэше, а потому, что шины материнской платы имеют большую дополнительную пропускную способность для системных дисков). Я могу полностью согласиться с потерей производительности, из-за которой полностью потребляется моя способность IO материнской платы (которая используется на 100%, что означает 0% потерянной мощности, что делает меня счастливым), но я не могу согласиться с тем, что этот механизм кэширования работает так ужасно в этом конкретном использовании случай.
# free
total used free shared buffers cached
Mem: 24731556 24531876 199680 0 8834056 12998916
-/+ buffers/cache: 2698904 22032652
Swap: 4194300 24764 4169536
Я тоже пробовал то же самое на Ubuntu, что и приводит к зависанию всей системы.;)
И чтобы уточнить, я не спрашиваю, как оставить память свободной для "системы", но для "кеша". Я знаю, что кэш-память автоматически возвращается в систему по мере необходимости, но моя проблема в том, что она не зарезервирована для кэширования определенных вещей.
Вопрос:
Есть ли способ сообщить этим операциям копирования ограничить использование памяти, поэтому некоторые важные вещи остаются кешированными, и поэтому любые замедления являются результатом нормального использования диска и не перечитывают те же наиболее часто используемые файлы? Например, существует ли настройка максимальной памяти для каждого процесса/пользователя/файловой системы, которую можно использовать в качестве кеша/буферов?