TGViewer
Admin Guides | Сисадмин Admin Guides | Сисадмин @admguides · 12K subscribers
Post #3139 1.67K
KSM: как Linux объединяет одинаковые страницы

Несколько процессов могут иметь разные виртуальные адреса, но содержать абсолютно одинаковые данные:

Process A                 Process B

0x400000 ──→ Page X 0x900000 ──→ Page Y
\ /
одинаковые


KSM (Kernel Samepage Merging) периодически сканирует подходящие anonymous pages и ищет одинаковое содержимое.
Если страницы совпали, kernel оставляет одну physical page и меняет mappings:

Process A ──┐
├──→ Page X
Process B ──┘


Теперь оба процесса читают одну и ту же страницу.

Самое интересное начинается при записи.

Process A ──┐
├──→ Page X
Process B ──┘

Process A: write()
↓
Copy-on-write
↓
Process A ──→ Page Z
Process B ──→ Page X


KSM помечает объединённую страницу так, чтобы запись не могла тихо изменить данные сразу для всех процессов. При попытке записи возникает page fault, после чего kernel создаёт отдельную копию страницы для записавшего процесса.

Проверить состояние KSM можно здесь:

cat /sys/kernel/mm/ksm/pages_shared
cat /sys/kernel/mm/ksm/pages_sharing
cat /sys/kernel/mm/ksm/pages_unshared


pages_shared показывает количество физических страниц, которые сейчас используются несколькими mappings.

⚡️KSM экономит память не за счёт сжатия данных, а за счёт того, что разные процессы временно начинают указывать на одну physical page. Как только один из них меняет содержимое, обычный Copy-on-Write разводит их обратно.
  • ❤ 6
  • 👍 4
More from @admguides
  1. Oct 6, 2026Process Builder: зачем Linux хочет уйти от fork()+exec() Классическая схема запуска процес…
  2. Oct 6, 2026Post #3160
  3. Oct 5, 2026💬 Вопрос на собеседовании для сисадмина Давайте разберем один из частых вопросов, который…
  4. Oct 5, 2026🫥 Сервис запустили - пора принимать поздравления и платежи С платежами поможет pay.hot. П…
  5. Oct 5, 2026Block-layer error injection: как Linux специально ломает I/O В Linux можно не ждать, пока…
  6. Oct 5, 2026АЙТИШНИКИ БЕСПЛАТНОЕ ОБУЧЕНИЕ Проект «Terminal» стал крупнейшей библиотекой бесплатного об…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →