类似 mysql 命中 bufferpool 和 redis 这类存内存操作 cpu 消耗在哪

2020-11-02 22:05:30 +08:00
 XDJI

今天发现一台线上 8 核 16G 机器 mysql 机器平均一直有 6-8 个线程在处于 running 数据不多应该都能命中 bufferpool 看了下 cpu 使用率 6%-10%左右 想了下 cpu 应该是挂起在等内存返回数据所以说使用率很低 这样理解对吗

3065 次点击
所在节点    MySQL
9 条回复
23571113
2020-11-02 22:09:12 +08:00
parser sql 和查询优化之类的还是很耗 cpu 的。
littlewing
2020-11-02 22:13:18 +08:00
sql 解析
执行计划
内存拷贝
XDJI
2020-11-02 22:16:17 +08:00
@23571113 这个是有一定消耗 但是像 mov 指令等待内存返回数据会让出 cpu 去执行别的吗 [之前我以为对上层是占用] 不然 cpu 使用率应该在 800%了
vk42
2020-11-02 22:46:02 +08:00
@XDJI CPU 内部流水线会调度不冲突的指令执行,但这些对 CPU 外部是不可见的。CPU 读写内存不会挂起,实在没有可执行的会空转等,不要和 I/O 搞混了
XDJI
2020-11-02 22:55:58 +08:00
@vk42 那这样理解和我最初想法一样 8 个线程满载 那岂不是说 cpu 使用率很高,和现在数据不一样呀 还是说因为双 1 落盘 io 导致的 。如果非双 1cpu 会上去吗
vk42
2020-11-03 00:27:24 +08:00
@XDJI 因为瓶颈在别的地方啊,redis 和 mysql 的话大量开销应该是在监听和处理网络 I/O 这里。要想读写内存跑满 CPU 你可以直接写 8 个进程全做 memcpy……
DoctorCat
2020-11-03 02:54:34 +08:00
感觉要全局看这问题,要具体看系统进程调度策略的,因为内核抢占、cpu 亲和性、时间记账和队列优先级都会影响到你这 CPU 使用率的统计
cholerae
2020-11-03 12:41:29 +08:00
perf 一下不就知道了,你咋知道来 V2EX 上能问到正确结果呢
XDJI
2020-11-03 16:37:47 +08:00
@cholerae 集思广益而已 线上肯定不是那么好操作 发出来大家探讨探讨

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/721163

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX