Почему отображаемые в памяти файлы MongoDB приводят к тому, что такие программы, как top, показывают большие числа, чем обычно? - PullRequest
0 голосов
/ 22 декабря 2011

Я пытаюсь обернуть голову вокруг внутренней части mongodb, и я продолжаю читать об этом

http://www.theroadtosiliconvalley.com/technology/mongodb-mongo-nosql-db/

Почему это происходит?

1 Ответ

3 голосов
/ 22 декабря 2011

Таким образом, работа файлов, отображаемых в память, заключается в том, что адреса в памяти отображаются байтом за байтом с файлом на диске. Это делает его очень быстрым, но очень большим. Представьте себе файл на диске для ваших данных, занимающий такой объем памяти.

Почему это круто

На практике это происходит потому, что запись и чтение из памяти напрямую, а не системный вызов (например, переключение контекста) происходит быстро. Кроме того, на практике тот факт, что этот огромный блок памяти не подходит для вашего физического плеера, это хорошо. Зачем? Вам нужен только рабочий набор данных, чтобы поместиться в оперативной памяти, потому что неиспользуемые страницы не загружаются и просто хранятся на диске. Если они необходимы, происходит сбой страницы, и она загружается. (Я считаю, что часть, которая была загружена, называется резидентной памятью)

Почему это отчасти сосет

Файлы, отображаемые в памяти, должны быть выровнены по страницам, поэтому, если вы не занимаете пространство памяти на границе страницы, то именно вы тратите пространство (маленький tradoff)

Сводка (tldnr)

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

...