Программно очистить кеш на смонтированном (SSD) диске в Linux

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

// Clear cache for benchmarking
sync();
std::ofstream ofs("/proc/sys/vm/drop_caches");
ofs << "3" << std::endl;
ofs.close();

Это сработало хорошо и дало мне ожидаемые результаты — измеренная скорость последовательного чтения с диска ~ 100 МБ / с при очистке кеша, во много раз выше, когда кеш оставался один.

На днях я установил SSD диск, смонтированный в / media /. После новой перезагрузки компьютера первая пара измерений соответствует ожидаемой (около 300 МБ / с), но когда кэш начинает работать, они, очевидно, намного выше.

Моя проблема сейчас в том, что строки кода, которые я использовал ранее, не имеют никакого эффекта с момента переноса приложения на SSD. Может, этот кеш ведет себя по-другому? Что-нибудь мне нужно сделать по-другому, чтобы очистить это? Единственное, что сейчас работает — перезагрузка компьютера.

1

Решение

Вы не говорите только, что вы делали, и работало ли что-то еще с этими данными. Вы можете только удалить неиспользуемые данные из кеша с помощью drop_caches — если по какой-либо причине данные должны храниться (например, потому что они грязные и должны быть записаны обратно), они не могут быть выселены. От документация по ядру для drop_caches:

Это неразрушающая операция, которая не освобождает грязные предметы.
Чтобы увеличить количество объектов, освобожденных этой операцией, пользователь может запустить
sync до написания /proc/sys/vm/drop_caches, Это сведет к минимуму
количество грязных объектов в системе и создать больше кандидатов на
отброшен.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]