mirror of
https://github.com/kvcache-ai/ktransformers.git
synced 2026-11-05 01:07:28 +00:00
[PR #685] [MERGED] fix numa cpu distribution 修复numa cpu分布问题 #1458
Labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
kvcache-ai/ktransformers#1458
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/kvcache-ai/ktransformers/pull/685
Author: @wkgcass
Created: 2/26/2025
Status: ✅ Merged
Merged: 2/26/2025
Merged by: @chenht2022
Base:
main← Head:main📝 Commits (1)
b2bff17fix numa cpu distribution📊 Changes
1 file changed (+6 additions, -1 deletions)
View changed files
📝
ktransformers/ktransformers_ext/cpu_backend/backend.cpp(+6 -1)📄 Description
问题描述
我的平台是双socket,每个socket24核(关闭超线程)。当我配置
cpu_infer=41时,性能较高,而配置cpu_infer=42时,性能骤降到1token/s。htop观察发现socket1上的cpu被全部占满,而socket1上有8个空闲的cpu。也就是说numa cpu分布不均匀。推测配置
42时性能骤降的原因是:socket1上的worker数多于cpu核数。排查过程
我注意到numa bind位于backend.cpp的
Backend::process_tasks里,numa_node会根据如下方式计算:按理说应该是均匀的才对。但在进行一番print debug后,我发现thread_num_会发生变化:
如下是配置
cpu_infer=41时的sort后的输出:很显然thread_num发生了变化,最终导致
numa_node = 0更少。推测是
do_work_stealing_job被使用了多次,导致一部分初始化时使用了32一部分使用了40。问题修复
直接使用传入的线程数初始化thread_num,而不进行min运算。
为了尽可能减少影响,这里加上了USE_NUMA宏判断,开启USE_NUMA才走直接赋值逻辑。
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.