32 位和 64 位 memcached 内存使用差异

32 位和 64 位 memcached 内存使用差异

我们有很多机器在运行 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 型机器使用了更多 RAM,但我误解了rusage统计数据(请参阅编辑历史)。有人知道为什么 B 型机器会先于其他机器开始驱逐,即使与 A 型机器同时播种了相同的数据?是因为底层硬件是 64 位吗?我在这里表现出对计算机硬件的无知,但只有一种方法可以解决这个问题。

答案1

如果 A 和 B 类型都在 32 位操作系统上,则用户空间应用程序(如 memcached)的对象大小应该没有差异。如果启用/禁用 PAE,则内核可能会出现差异,但即使如此也不会影响用户空间内存使用。

您能发布这两种类型的stats、、stats sizes的完整输出stats items吗?(对于大内存,最后两个可能需要很长时间,但在 67M 的情况下则不是这种情况)。

当然,初始输出为memcached -vv

相关内容