服务器内存与服务器缓存是同一概念吗?144GB RAM是否全用作缓存?
服务器RAM与缓存相关问题解答
问题1:144GB的服务器RAM是否会全部被用作缓存?
不会,服务器的内存会被划分给多个不同用途,仅有空闲部分会被用作缓存:
- 首先需要预留固定容量给操作系统内核运行使用,包含内核进程、硬件驱动、内核态数据结构的内存开销,通常占总内存的1%~3%
- 其次要分配给服务器上运行的所有业务进程私有内存,比如Web服务、数据库、容器 runtime、中间件等进程自身运行占用的内存,这部分空间完全不参与缓存逻辑
- 剩余的空闲内存才会被系统默认用作页缓存(Page Cache),用来缓存磁盘文件、读写请求、网络响应等数据来提升访问效率,当业务进程需要申请更多内存时,系统会自动回收部分页缓存空间分配给进程使用
举个实际场景例子:144GB内存的数据库服务器,通常会给数据库进程单独分配90GB内存用来存业务热数据,内核占用2GB左右,剩下的50GB左右才会被用作系统级缓存。
问题2:日常提及的服务器缓存是否等同于服务器内存?
二者完全不等同,缓存是逻辑上的加速层概念,内存是硬件存储载体,内存只是服务器缓存的载体之一:
- 内存级缓存是大家日常最常提到的缓存类型,包含系统页缓存、应用自身在内存中开辟的缓存空间(比如Redis全内存缓存、Java应用堆内缓存),是所有缓存层中延迟最低的一类
- 除此之外还有大量非内存形态的服务器缓存:比如CPU自带的L1/L2/L3高速缓存、SSD给机械硬盘做的读写缓存、甚至节点外的CDN缓存、反向代理缓存都属于广义的服务器缓存范畴
只有当交流时明确特指内存缓存的场景下,二者才会被模糊指代,但从定义上不能直接划等号。
内容的提问来源于stack exchange,提问作者GigiWithoutHadid
相关产品推荐
相关产品推荐

