【问题标题】:CPU-Core thread classification FunctionCPU-Core线程分类功能
【发布时间】:2010-01-11 18:47:59
【问题描述】:

我将编写一个多线程共享内存消息传递系统,用于在进程之间进行超大容量消息传递。消息将来自网络服务器的工作线程。我想利用同一 CPU 共享上的内核的 CPU 缓存位置。这样当我在这个 IPC 系统的接收端唤醒一个工作线程时,我就会唤醒同一个 CPU 上的一个线程。

我需要 Linux(最好是一般的 POSIX)和 windows 的 API 调用和我需要做的位掩码来提取信息,这些信息将使我能够从所述线程的上下文中对执行的线程 ID 进行分类 - 使用以下结构:

struct thread_core_id
{
    uint16_t cpu_Id;
    uint16_t core_Id;
};

两个平台的功能将不胜感激。我希望这可以在没有系统调用的情况下完成——即上下文切换。

-- 编辑--

我目前专注于 x86,但其他架构也很有用。

【问题讨论】:

    标签: c cpu-usage micro-optimization second-level-cache


    【解决方案1】:

    特别是对于 Linux,您应该能够从 /proc/cpuinfo/sys/devices/system/cpu/cpu*/cache 中获取所需的信息,并将其与 sched_{s|g}etaffinity() 调用一起使用。如果您还没有看过What Every Programmer Should Know About Memory,请查看第 5.3 节。

    【讨论】:

    • (+1) 获取文章和提示。我阅读了电话和文章。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 2012-07-29
    • 1970-01-01
    • 2019-05-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多