Назад | Перейти на главную страницу

разница в использовании памяти memcached на 32- и 64-битных версиях

У нас есть несколько ящиков, на которых работает memcached. Некоторые из них 32-битные, а некоторые 64-битные, но все запускают 32-битную установку RHEL из-за различных вещей, связанных с Perl. Мы назовем их типами A и B соответственно. Оба типа запускают memcached 1.2.8 с одинаковым объемом памяти, выделенной через -m переключатель. Каждый экземпляр memcached содержит одни и те же данные - в этой установке мы используем их не как распределенный хэш, а как локальное хранилище на каждой машине. Отдельный процесс отвечает за заполнение каждого экземпляра свежими данными через равные промежутки времени.

Сегодня мы заметили, что все 64-битные машины начали вытеснять элементы:

Тип A, 32-битный

STAT curr_items 115208
STAT evictions 0
STAT limit_maxbytes 67108864

Тип B, 64-бит

STAT curr_items 122192
STAT evictions 1049488
STAT limit_maxbytes 67108864

Первоначально я думал, что машины типа B используют больше оперативной памяти, но я неправильно понял rusage статистика (см. историю редактирования). Есть идеи, почему машины типа B начнут выселять раньше других, даже с теми же данными, посеянными одновременно с машинами типа A? Это связано с тем, что базовое оборудование является 64-битным? Здесь я демонстрирую позорное незнание компьютерного оборудования, но есть только один способ исправить это.

Если оба типа A и B работают в 32-битной ОС, не должно быть разницы в размерах объектов для пользовательских приложений, таких как memcached. Если PAE включен / отключен, для ядра можно увидеть различия, но даже это не должно влиять на использование памяти в пользовательском пространстве.

Не могли бы вы опубликовать полный вывод stats, stats sizes, stats items для обоих типов? (Два последних могут занять много времени для большой памяти, но при 67 МБ это не ваш случай).

И, конечно же, первоначальный выход memcached -vv.