首页 > 其他分享 >设置CPU亲和性

设置CPU亲和性

时间:2024-02-28 10:58:26浏览次数:16  
标签:set 亲和性 mask cpu 设置 CPU

即,某个线程固定跑在某个CPU的(某个)核上

/**
 * 设置当前线程cpu亲和性
 * @param i cpu索引,如果为-1,那么取消cpu亲和性
 * @return 是否成功,目前只支持linux---代码块来自ZLtookit
 */

bool setThreadAffinity(int i) { #if (defined(__linux) || defined(__linux__)) && !defined(ANDROID) cpu_set_t mask; CPU_ZERO(&mask); if (i >= 0) { CPU_SET(i, &mask); } else { for (auto j = 0u; j < thread::hardware_concurrency(); ++j) { CPU_SET(j, &mask); } } if (!pthread_setaffinity_np(pthread_self(), sizeof(mask), &mask)) { return true; } WarnL << "pthread_setaffinity_np failed: " << get_uv_errmsg(); #endif return false; }

以下转载自(https://blog.csdn.net/m0_46376834/article/details/134834253)

cpu_set_t 类型是一个位图,每个位代表一个 CPU 核心。通过设置和操作这个位图,可以控制进程或线程的 CPU 亲和性,即将其绑定到特定的 CPU 核心上。
以下是一些常用的操作 cpu_set_t 的函数和宏:

    CPU_ZERO(cpu_set_t* set):将 set 中的所有位清零,表示没有任何 CPU 核心被设置。
    CPU_SET(int cpu, cpu_set_t* set):将 set 中的第 cpu 位设置为 1,表示将对应的 CPU 核心添加到集合中。
    CPU_CLR(int cpu, cpu_set_t* set):将 set 中的第 cpu 位清零,表示将对应的 CPU 核心从集合中移除。
    CPU_ISSET(int cpu, cpu_set_t* set):检查 set 中的第 cpu 位是否被设置为 1,返回一个非零值表示已设置,否则返回 0。
使用 cpu_set_t 可以实现将进程或线程绑定到特定的 CPU 核心上,以提高程序的性能和可预测性。例如,在多核系统中,可以将不同的任务分配给不同的 CPU 核心来并行执行,以充分利用系统资源。

标签:set,亲和性,mask,cpu,设置,CPU
From: https://www.cnblogs.com/8335IT/p/18039286

相关文章

  • Oracle设置日志参数-ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
    要实现两个数据库之间的实时同步,需要给Oracle设置参数ALTERDATABASEADDSUPPLEMENTALLOGDATA;--执行了12小时,等待数据库中的其它事务都提交以后才执行完成ALTERDATABASEADDSUPPLEMENTALLOGDATA(PRIMARYKEY)COLUMNS;ALTERDATABASEADDSUPPLEMENTALLOGDATA(......
  • css 设置版本号
      .el-row::before{content:"";width:0;height:0;border:60pxsolidtransparent;border-right:60pxsolid#e3e3e3;transform:rotate(135deg);position:absolute;right:-61px;top:-61px;cursor:pointer;}.el......
  • 银河麒麟桌面版操作系统密码复杂度设置
    这里是桌面版的使用,资深使用者可以使用命令一键修改,这里面不涉及1密码复杂度设置1.1开始菜单,选择设置快捷键win+i也可以1.2打开账户设置1.3在安全中心的账号保护中1.4推荐的是默认的策略密码强度使用默认推荐的就可以,如果不符合你的需求可以选择自定义来自行设置密......
  • 6-2. 音源设置和音效播放
    免费音乐和音效音效:https://assetstore.unity.com/packages/audio/sound-fx/free-casual-game-sfx-pack-54116音乐:https://assetstore.unity.com/packages/audio/music/free-casual-music-pack-242591使用AudioManager播放音乐和音效创建AudioManager脚本使用Script......
  • Swagger + knife4j ,并设置header入参
    配置代码importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importspringfox.documentation.builders.ApiInfoBuilder;importspringfox.documentation.builders.PathSelectors;importspringfox.documenta......
  • Adnroid 《如何设置 gradle》
    在新版的Android中设置https://jitpack.io由原来的原来在build.gradle中配置的allprojects{repositories{google()jcenter()maven{url'https://jitpack.io'}}}改到了settings.gradle中dependencyResolutionManagement{ repo......
  • Android 《设置全屏隐藏状态栏》
    @OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);//全屏去状态栏(在setContentView之前)requestWindowFeature(Window.FEATURE_NO_TITLE);getWindow().addFlags(WindowManager.La......
  • linux 中 printf函数常用选项设置占位长度、左对齐、输出百分号
     001、设置占位长度[root@pc1test1]#printf"%s\n""abc"##一般输出abc[root@pc1test1]#printf"%20s\n""abc"##设置占位长度20,默认情况下是右对齐abc[root@pc1test1]#printf"%-2......
  • Vue3 [1] Vite + element-plus +Vue3 项目搭建、"@"别名设置
    1.环境准备node官网npm切换国内npm源镜像npmconfigsetregistryhttps://registry.npmmirror.com查看当前的镜像源npmconfiggetregistryvscode插件扩展包VueVolarextensionPack2.项目初始化本项目使用vite进行构建,vite官方中文文档参考:cn.......
  • 设置PHP最大连接数及php-fpm -static高并发
    设置PHP最大连接数及php-fpm高并发参数调整 服务器中找到php-fpm.conf配置(有的会在引入的www.conf中)1234567891011121314151617181920212223[global]pid=/usr/local/php/var/run/php-fpm.piderror_log=/usr/local/php/var/log/ph......