tiny-craft / tiny-rdm

Tiny RDM (Tiny Redis Desktop Manager) - A modern, colorful, super lightweight Redis GUI client for Mac, Windows, and Linux.
https://redis.tinycraft.cc/
GNU General Public License v3.0
8.84k stars 448 forks source link

[FEATURE]memory stats #328

Open ddatsh opened 3 months ago

ddatsh commented 3 months ago

redis 4.0 之前,只能通过info memory查看 redis 实例的内存大体使用状况,而无法了解内存的具体使用细节,比如expire的消耗,client output buffer, query buffer等是很难直观显示的。该指令能够展现redis内部内存使用细节;

执行结果示例及对应参数解析: 1) "peak.allocated" # redis从启动来,allocator分配的内存峰值 2) (integer) 2290242368 3) "total.allocated" # allocator分配当前内存字节数 4) (integer) 2290241776 5) "startup.allocated" # redis启动完成使用的内存字节数 6) (integer) 6315320 7) "clients.normal" # 所有一般客户端消耗内存节字数,即所有flag为N的客户端内存使用 8) (integer) 150754 9) "aof.buffer" # aof buffer使用内存字节数,一般较小,在aof rewrite时会变得较大 10) (integer) 0 11) "lua.caches" # 所有lua脚本占用的内存节字数 12) (integer) 0 13) "db.0" 14) 1) "overhead.hashtable.main" # 对应db的所有key的hash表总的内存节字数 2) (integer) 680720488 3) "overhead.hashtable.expires" # 对应db的过期key的hash表总的内存节字数 4) (integer) 416 15) "overhead.total" # redis总的分配的内存的字节数 16) (integer) 687186978 17) "keys.count" # 整个实例key的个数,相同于dbsize返回值 18) (integer) 13662569 19) "keys.bytes-per-key" # 每个key平均占用字节数;把overhead也均摊到每个key上 20) (integer) 167 21) "dataset.bytes" # 表示redis数据集占用的内存容量,即分配的内存总量减去 overhead.total 22) (integer) 1603054798 23) "dataset.percentage" # 表示redis数据占用内存占总内存分配的百分比 24) "70.188545227050781" 25) "peak.percentage" # 当前内存使用量在峰值时的占比 26) "99.999977111816406" 27) "allocator.allocated" # 该参数不同与 total.allocated, 它计算所有分配的内存大小(不仅仅是使用zmalloc分配的) 28) (integer) 2291632296 29) "allocator.active" # 与常驻内存allocator.resident不同,这不包括jemalloc申请的还未使用的内存 30) (integer) 2293006336 31) "allocator.resident" # 与RSS不同,这不包括来自共享库和其他非堆映射的RSS 32) (integer) 2340564992 33) "allocator-fragmentation.ratio" # 等于 allocator.active / allocator.allocated 34) "1.0005995035171509" 35) "allocator-fragmentation.bytes" # 等于 allocator.active - allocator.allocated 36) (integer) 1374040 37) "allocator-rss.ratio" # 等于 allocator.resident / allocator.active 38) "1.0207407474517822" 39) "allocator-rss.bytes" # 等于 allocator.resident - allocator.active 40) (integer) 47558656 41) "rss-overhead.ratio" # 等于 RSS / allocator.resident 42) "0.99930697679519653" 43) "rss-overhead.bytes" # 等于 RSS - allocator.resident 44) (integer) -1622016 45) "fragmentation" # 等于 RSS / total.allocated 46) "1.0212923288345337" 47) "fragmentation.bytes" # 等于 RSS - total.allocated 48) (integer) 48763208

tiny-craft commented 3 months ago

👍🏻,列得很详细。不过我没看明白Feature需求是什么😂

ddatsh commented 3 months ago
  • 822"
  • "allocator-rss.bytes" # 等于 allocator.resident - allocator.active
  • (integer) 47558656
  • "rss-overhead.ratio" # 等于 RSS / allocator.resident
  • "0.99930697679519653"
  • "rss-overhead.bytes" # 等于 RSS - allocator.resident
  • (integer) -1622016
  • "fragmentation" # 等于 RSS / total.allocated
  • "1.0212923288345337"

在rdm 信息里,除info memory取到的,再加一些memory stats 出来的字段?

tiny-craft commented 3 months ago

哦,可以考虑。

你这些每个参数的用途,也给我一些灵感,应该给info里面每项加个注释之类的,因为大部分人不会记得所有项的意思😂