№
KSM only merges anonymous (private) pages, never pagecache (file) pages.
Это хорошо работает только для виртуальных машин, потому что вся память виртуальной машины хранится как частные страницы в хост-процессе. Например. процесс qemu на хост-компьютере.
(Вместо этого, например, пользователи Docker могут обмениваться страницами между идентичными изображениями или изображениями с общим предком, которые используют overlayfs -на основе драйвера хранилища).
Кроме того, текущий интерфейс KSM требует madvise(... MADV_MERGEABLE)
для каждого потенциально общего диапазона. Этот вызов должен был бы выполняться каждым процессом в контейнере при создании сопоставления. Очевидно, что этот интерфейс намного легче адаптировать для использования отдельными процессами специального -назначения, включая, но не ограничиваясь qemu
.
Вот простой подход:
$ awk '{a[$1]+=$2}END{for(i in a){print i,a[i]}}' data
ero 9247
3es 69955
digital 7382
ride 5884
Обратите внимание, что при этом большая часть данных вашего файла будет храниться в памяти, поэтому могут возникнуть проблемы с очень большими файлами.