- 主题:能用 mmap 来省点内存吗?
提前把文件都序列化之后放到另一个文件里。按需读取。然后自己在内存里弄一小块作cache。
数据被访问的概率不太可能完全平均吧。
【 在 hgoldfish 的大作中提到: 】
: 我有个程序往内存里面加载了大量的数据 (8G+),以供外部服务器使用。
: 每一段数据都有差不多的概率被访问到。访问的频率中等,不是特别热的数据。既有读取与有写入,但写入相对比较少。
: 如果每次都从文件中加载的话,反序列化很占用 CPU 时间。放在内存里面又太占用 VPS 内存,云服务器的内存很贵。
: ...................
--
FROM 121.69.86.*
8G 到 16g 大小,本来就是另外一大组数据集的 cache,难道要搞 cache 之 cache 哈哈?
之前统计过,确实是几乎平均的。
之前一直是直接扔在物理内存里面,我们服务器都是不开 swap 的,现在觉得费钱,看看能不能少一点。
【 在 chunhui 的大作中提到: 】
: 提前把文件都序列化之后放到另一个文件里。按需读取。然后自己在内存里弄一小块作cache。
: 数据被访问的概率不太可能完全平均吧。
--
FROM 47.243.39.*
那没治了。我觉着折腾的这个功夫,比16G的内存更花钱。
【 在 hgoldfish 的大作中提到: 】
: 8G 到 16g 大小,本来就是另外一大组数据集的 cache,难道要搞 cache 之 cache 哈哈?
: 之前统计过,确实是几乎平均的。
: 之前一直是直接扔在物理内存里面,我们服务器都是不开 swap 的,现在觉得费钱,看看能不能少一点。
: ...................
--
FROM 121.69.86.*
不止一台呢。。算一百台,有的占用 2g,有的占用 8g 16g,算算几百 G 内存,能省点就省点吧。
【 在 chunhui 的大作中提到: 】
: 那没治了。我觉着折腾的这个功夫,比16G的内存更花钱。
--
FROM 47.243.39.*
成百上千的话,那确实钱不少。
觉着各种形式的cache,从cdn到cpu l1 2 3,就是解决这种问题的方法。没什么其他好办法。
【 在 hgoldfish 的大作中提到: 】
: 不止一台呢。。算一百台,有的占用 2g,有的占用 8g 16g,算算几百 G 内存,能省点就省点吧。
--
FROM 121.69.86.*
操作系统不会自动把映射的页扔掉。
你这个做法没有任何的优化啊,用过的内存超过物理+swap就会被oom kill
你还不如创建一个32GB的kv数据库呢,让数据库自己管缓存。
【 在 hgoldfish 的大作中提到: 】
: 标 题: 能用 mmap 来省点内存吗?
: 发信站: 水木社区 (Sun Aug 14 21:03:34 2022), 站内
:
: 我有个程序往内存里面加载了大量的数据 (8G+),以供外部服务器使用。
:
: 每一段数据都有差不多的概率被访问到。访问的频率中等,不是特别热的数据。既有读取与有写入,但写入相对比较少。
:
: 如果每次都从文件中加载的话,反序列化很占用 CPU 时间。放在内存里面又太占用 VPS 内存,云服务器的内存很贵。
:
: 是不是可以用 mmap 优化一下?我创建一个 32G 大小的文件,然后用 mmap() 映射到内存里面,把这些数据放在映射内存里面?
:
: 这样做的话,操作系统会在物理内存不足的时候自动地把映射的页扔掉吧?等需要读取到的时候再重新从磁盘加载?减少 OOM 的机会?
:
: --
: 灭绝人性啊
:
:
: ※ 来源:·水木社区 mysmth.net·[FROM: 117.24.95.*]
--
FROM 124.126.151.*
那有什么办法让操作系统扔掉这些映射的页吗?
需要的时候再自动从文件加载回来?
【 在 Knightmare 的大作中提到: 】
: 操作系统不会自动把映射的页扔掉。
: 你这个做法没有任何的优化啊,用过的内存超过物理+swap就会被oom kill
: 你还不如创建一个32GB的kv数据库呢,让数据库自己管缓存。
: ...................
--
FROM 117.24.95.*
有办法啊
mummap
【 在 hgoldfish 的大作中提到: 】
: 标 题: Re: 能用 mmap 来省点内存吗?
: 发信站: 水木社区 (Fri Aug 19 18:21:58 2022), 站内
:
: 那有什么办法让操作系统扔掉这些映射的页吗?
:
: 需要的时候再自动从文件加载回来?
:
: 【 在 Knightmare 的大作中提到: 】
: : 操作系统不会自动把映射的页扔掉。
: : 你这个做法没有任何的优化啊,用过的内存超过物理+swap就会被oom kill
: : 你还不如创建一个32GB的kv数据库呢,让数据库自己管缓存。
: : ...................
:
: --
: 灭绝人性啊
:
:
: ※ 来源:·水木社区 mysmth.net·[FROM: 117.24.95.*]
--
FROM 124.126.151.*
但是不会自动加载回来。略麻烦。
【 在 Knightmare 的大作中提到: 】
: 有办法啊
: mummap
--
FROM 117.24.95.*
再mmap呗
自己弄个读写过的byte计数,超过内存四分之三就mumap一次,再重新mmap
【 在 hgoldfish 的大作中提到: 】
: 标 题: Re: 能用 mmap 来省点内存吗?
: 发信站: 水木社区 (Fri Aug 19 18:24:34 2022), 站内
:
: 但是不会自动加载回来。略麻烦。
:
: 【 在 Knightmare 的大作中提到: 】
: : 有办法啊
: : mummap
:
: --
: 灭绝人性啊
:
:
: ※ 来源:·水木社区 mysmth.net·[FROM: 117.24.95.*]
--
FROM 124.126.151.*