当前位置: 首页 > article >正文

pthread亲和性继承的一个坑:main绑核让整个进程退化到单核

现象C 多线程进程 qfactor19 万行/分钟的高频股票因子计算配 work_thread_nums8应该用 8 个build 线程并行处理 8 个 partition 的数据。但实测 CPU 只跑满 1 个核101%per-factor cycle耗时 23 秒同一份代码在另一个分支上 CPU 用满 8.3 核832%cycle 只要 2 秒。12倍速度差但代码逻辑、编译选项、ylfeature 子模块全部完全相同。排查过程按嫌疑度走过的死胡同根因// apps/qfactor/main.cc:147quick 上有if (config-getOtherCpuID() 0) {utility::bindCurrentThreadToCpu(config-getOtherCpuID(), main);} else {utility::bindCurrentThreadToCpu(0, main); // ← 默认 fallback 到 CPU 0}m3 分支没这段。Linux pthread_create 默认继承父线程的 CPU 亲和性man pthread_create。一旦 main 被pthread_setaffinity_np 绑到单核所有从 main 派生的子线程出生时都自动只能跑那个核- ✅ 显式 bindThreadToCpu 重绑的buildThreads[i]、sendThread、checkMasterThread——pthread_create后立刻被重绑到 config 指定核如果 config 有可以救回- ❌ 没有显式重绑机制的librdkafka 的 rdk:main / rdk:bro / 每个 broker 的 worker、ZMQ context内部 epoll 线程、Boost.Log async sink 后台线程、Redis hiredis subscriber、OceanView心跳——全部继承 main 的单核亲和性再也回不来如果 config 没配 other_cpu_id很多场景默认不配fallback 把 main 绑到 CPU0整个进程的所有线程被锁在 CPU 0 上 time-slice 共享。12 个线程挤一核每个线程拿到 ~7%CPU总和 100%。验证数据修 main.cc把那 5 行删掉重编译重跑CPU build 线程 cycle 耗时quick 修复前 101% 7-13% × 12 23.4squick 修复后 832% 87-99% × 11 2.0s ← 12× 提速m3 对照 893% 99-100% × 11 2.0s每只线程的 affinity mask- 修复前0x1仅 CPU 0- 修复后0xffffffff...所有核直接 taskset -p $tid 就能看出来。教训1. pthread_setaffinity_np 是有传染性的——绑了父线程后续 spawn出来的所有线程都被传染包括你看不见的第三方库内部线程。2. 如果一定要绑 main要么在所有子线程创建之后再绑要么用 pthread_attr_setaffinity_np给每个具体线程显式设亲和性。前者有种顺序依赖、后者要求你能控制每个线程的创建——第三方库做不到。3. 绑核默认值不要用 0。CPU 0 是最容易被系统中断IRQ 处理、softirq、内核 worker打扰的核。找不到配置就绑 0 是双重坑第一坑是上面的传染性第二坑是绑了一个最忙的核。4. 观测手段top -H 看每个线程的 CPU% 和 R/D/S 状态加上 taskset -p 查 affinitymask是最快定位类似问题的组合。top 总 CPU 看着只有 100%、但有 12 个线程都活着——这种线程多但CPU 上不去的反直觉模式就是亲和性继承在作祟。

相关文章:

pthread亲和性继承的一个坑:main绑核让整个进程退化到单核

现象 C 多线程进程 qfactor(19 万行/分钟的高频股票因子计算),配 work_thread_nums8,应该用 8 个 build 线程并行处理 8 个 partition 的数据。但实测 CPU 只跑满 1 个核(101%),per-factor cycl…...

甲言(Jiayan)开源工具:古汉语NLP处理的完整解决方案指南

甲言(Jiayan)开源工具:古汉语NLP处理的完整解决方案指南 【免费下载链接】Jiayan 甲言,专注于古代汉语(古汉语/古文/文言文/文言)处理的NLP工具包,支持文言词库构建、分词、词性标注、断句和标点。Jiayan, the 1st NLP…...

从《致爱丽丝》到流行金曲:拆解D.S.与Coda,让你的演奏立刻有‘专业范儿’

从《致爱丽丝》到流行金曲:拆解D.S.与Coda,让你的演奏立刻有"专业范儿" 当钢琴初学者第一次翻开《致爱丽丝》的乐谱,往往会被那些神秘的意大利文标记弄得一头雾水。D.C.、D.S.、Fine、Coda——这些看似简单的符号背后,…...

构建内部知识库问答系统时集成Taotoken的多模型路由

构建内部知识库问答系统时集成Taotoken的多模型路由 1. 企业知识库问答系统的需求与挑战 企业内部知识库问答系统需要处理从简单文档检索到复杂逻辑推理的各类问题。传统单一模型方案往往面临两个困境:高性能模型处理简单查询时造成资源浪费,而经济型模…...

5分钟掌握VinXiangQi:智能象棋连线工具实战指南

5分钟掌握VinXiangQi:智能象棋连线工具实战指南 【免费下载链接】VinXiangQi Xiangqi syncing tool based on Yolov5 / 基于Yolov5的中国象棋连线工具 项目地址: https://gitcode.com/gh_mirrors/vi/VinXiangQi VinXiangQi是一款基于深度学习YOLOv5技术的中国…...

革命性Mac清理工具Pearcleaner:开源智能清理的终极解决方案

革命性Mac清理工具Pearcleaner:开源智能清理的终极解决方案 【免费下载链接】Pearcleaner A free, source-available and fair-code licensed mac app cleaner 项目地址: https://gitcode.com/gh_mirrors/pe/Pearcleaner 在Mac生态系统中,应用残留…...

好用的切丁机源头厂家:核心竞争力构建策略解析

好用的切丁机源头厂家:核心竞争力构建策略解析切丁机行业普遍面临人工效率低、品控不稳定、设备通用性差等痛点,如何通过技术与服务构建核心竞争力,成为源头厂家破局的关键。揭阳市美林机电设备有限公司作为深耕食品机械领域10年的源头企业&a…...

推理延迟骤降63%?揭秘MCP 2026引擎与Kubernetes+ONNX Runtime协同优化的4层缓存架构,

更多请点击: https://intelliparadigm.com 第一章:MCP 2026 AI 推理引擎集成概览 MCP 2026 是新一代面向边缘-云协同场景的轻量化 AI 推理引擎,专为低延迟、高吞吐、多模态模型部署而设计。其核心采用模块化架构,支持 ONNX、Trit…...

Tri-Prompting:视频生成中的三维统一控制框架解析

1. Tri-Prompting:视频生成领域的统一控制框架在视频生成技术快速发展的今天,如何实现对生成内容的精确控制一直是行业面临的重大挑战。传统方法往往只能单独控制场景、主体或运动中的某一个维度,这严重限制了创作自由度。Tri-Prompting的出现…...

抖音内容批量下载与智能管理:开源工具解决数字内容保存难题

抖音内容批量下载与智能管理:开源工具解决数字内容保存难题 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback …...

【阵列优化】自适应波束成形方法提升被动雷达在海上及风电场杂波中的性能

一、文章概览与核心贡献 论文标题: Adaptive Beamforming Approaches to Improve Passive Radar Performance in Sea and Wind Farms Clutter 作者: Rosado-Sanz 等,西班牙阿尔卡拉大学 发表: Sensors 2022, 22(18), 6865 核心问题: 无源雷达(Passive Radar, PR)利用第三方…...

如何用 Python 快速接入 Taotoken 并调用 OpenAI 兼容接口

如何用 Python 快速接入 Taotoken 并调用 OpenAI 兼容接口 1. 准备工作 在开始之前,请确保您已经完成 Taotoken 平台的注册,并在控制台中创建了有效的 API Key。同时,您需要准备一个 Python 3.7 或更高版本的环境。建议使用虚拟环境来管理项…...

Windows系统优化终极指南:Chris Titus Tech WinUtil完全教程

Windows系统优化终极指南:Chris Titus Tech WinUtil完全教程 【免费下载链接】winutil Chris Titus Techs Windows Utility - Install Programs, Tweaks, Fixes, and Updates 项目地址: https://gitcode.com/GitHub_Trending/wi/winutil 还在为Windows系统管…...

Steam库存管理革命:5个免费技巧让你每天节省3小时

Steam库存管理革命:5个免费技巧让你每天节省3小时 【免费下载链接】Steam-Economy-Enhancer 中文版:Enhances the Steam Inventory and Steam Market. 项目地址: https://gitcode.com/gh_mirrors/ste/Steam-Economy-Enhancer 厌倦了在Steam市场上…...

国家中小学智慧教育平台电子课本下载终极指南:3分钟快速获取离线教材

国家中小学智慧教育平台电子课本下载终极指南:3分钟快速获取离线教材 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具,帮助您从智慧教育平台中获取电子课本的 PDF 文件网址并进行下载,让您更方便地获取课本内容…...

【NDK 开发】一文读懂 Android Native 崩溃:日志结构、信号含义与符号解析

文章目录一、基本知识1.1 Native 崩溃日志1.1.1 logcat 中的 Native 崩溃日志摘要1.1.2 墓碑日志 Tombstones1.2 崩溃日志组成结构1.2.1 崩溃信号和基本信息1.2.2 调用堆栈二、日志分析工具2.1 so 文件与调试符号2.1.1 so 文件的调试信息2.1.2 如何获取带调试符号的 .so 文件2.…...

Sunshine终极指南:5分钟搭建你的专属游戏串流服务器

Sunshine终极指南:5分钟搭建你的专属游戏串流服务器 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 想要用轻薄笔记本流畅运行3A大作?渴望在客厅电视上享受…...

甲言Jiayan:开启古汉语智能处理的新纪元

甲言Jiayan:开启古汉语智能处理的新纪元 【免费下载链接】Jiayan 甲言,专注于古代汉语(古汉语/古文/文言文/文言)处理的NLP工具包,支持文言词库构建、分词、词性标注、断句和标点。Jiayan, the 1st NLP toolkit designed for Classical Chine…...

手把手教你制作Win10打印机共享修复‘急救包’:一键替换win32spl.dll+修改注册表

实战指南:构建Win10打印机共享修复工具包的技术解析 打印机共享问题一直是困扰企业IT支持人员和热心技术爱好者的高频难题。当多台计算机需要通过网络共享同一台打印机时,Windows 10系统更新后经常出现的0x00000709、0x0000011b等错误代码会让整个办公网…...

终极怪物猎人世界叠加层工具:HunterPie如何彻底改变你的狩猎体验

终极怪物猎人世界叠加层工具:HunterPie如何彻底改变你的狩猎体验 【免费下载链接】HunterPie-legacy A complete, modern and clean overlay with Discord Rich Presence integration for Monster Hunter: World. 项目地址: https://gitcode.com/gh_mirrors/hu/Hu…...

在 Windows 系统上快速配置 Taotoken 的 OpenAI 兼容 API 调用环境

在 Windows 系统上快速配置 Taotoken 的 OpenAI 兼容 API 调用环境 1. 准备工作 在开始配置之前,请确保已具备以下条件:一个有效的 Taotoken 账户和 API Key。登录 Taotoken 控制台后,可以在「API 密钥管理」页面创建新的密钥。同时&#x…...

PvZ Toolkit终极指南:5分钟快速上手植物大战僵尸最强修改器

PvZ Toolkit终极指南:5分钟快速上手植物大战僵尸最强修改器 【免费下载链接】pvztoolkit 植物大战僵尸 PC 版综合修改器 项目地址: https://gitcode.com/gh_mirrors/pv/pvztoolkit PvZ Toolkit是一款专为经典游戏《植物大战僵尸》PC版设计的开源综合修改工具…...

长期使用 Taotoken 后对账单追溯与成本分析的实际感受

长期使用 Taotoken 后对账单追溯与成本分析的实际感受 1. 用量数据的透明性与可追溯性 在长期使用 Taotoken 的过程中,最直接的体验是调用数据的透明呈现。控制台的用量看板按日/周/月维度自动聚合请求量,并以模型为粒度展示 Token 消耗分布。这种设计…...

PvZ Toolkit终极指南:简单三步让植物大战僵尸体验全面升级

PvZ Toolkit终极指南:简单三步让植物大战僵尸体验全面升级 【免费下载链接】pvztoolkit 植物大战僵尸 PC 版综合修改器 项目地址: https://gitcode.com/gh_mirrors/pv/pvztoolkit 你是否曾经在玩植物大战僵尸时,因为阳光不足而无法布置理想的防御…...

Android蓝牙开发核心技术深度解析与面试指南

本文聚焦于Android蓝牙开发的核心技术,基于修改后的职位信息,以蓝牙通信为主轴展开。原职位要求强调Android应用开发经验、通信机制理解、系统架构熟悉度、性能优化能力及工作态度。我们将其调整为蓝牙专精方向:要求3年以上Android开发经验,深入掌握蓝牙协议栈(包括BLE和C…...

容器云部署与应用

容器云部署与应用:Docker 全流程实战心得一、前言在本次容器云部署与应用的课程中,通过多阶段的实操练习,系统掌握了 Docker 从基础命令操作、私有仓库搭建,到自定义镜像构建、容器编排部署的完整流程。从最初对容器技术的一知半解…...

VSCode 2026 AI调试器突然禁用?3步绕过企业策略限制,解锁5种被隐藏的智能纠错模式(含TypeScript/Python/Rust全栈支持)

更多请点击: https://intelliparadigm.com 第一章:VSCode 2026 AI调试器禁用现象的本质溯源 VSCode 2026 版本引入的 AI 调试器(vscode/ai-debugger)在部分开发环境中默认处于禁用状态,该现象并非配置遗漏或用户误操作…...

如何免费强力修复损坏的MP4视频文件:完整终极指南

如何免费强力修复损坏的MP4视频文件:完整终极指南 【免费下载链接】untrunc Restore a damaged (truncated) mp4, m4v, mov, 3gp video. Provided you have a similar not broken video. 项目地址: https://gitcode.com/gh_mirrors/unt/untrunc 你是否曾经遇…...

期货量化参数管理实战:防过拟合的滚动验证与版本追踪

前言 我在期货量化迭代里见过最多的问题,是策略逻辑本身并不差,但参数管理失控。一次调参有效,两次调参还行,到了第十次,团队已经说不清当前版本为什么可用。 参数管理如果只靠记忆,最终会把回测结果变成不…...

别再只盯着MOS了!聊聊语音合成项目里,MCD和STOI这两个客观指标到底该怎么用(附Python避坑指南)

语音合成质量评估实战:MCD与STOI指标深度解析与避坑指南 在语音合成技术快速迭代的今天,开发者们常常陷入一个困境:明明模型指标表现优异,实际生成的语音却让人皱眉。这种"指标漂移"现象背后,往往是对评估工…...