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

linux 进程/线程设置核亲和性

1,线程绑定内核

#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>

// 定义一个函数,用于设置线程的CPU亲和性
void set_thread_affinity(pthread_t thread, int cpu_id) {
    cpu_set_t cpuset;
    int s;

    // 清空CPU集合并添加指定的CPU
    CPU_ZERO(&cpuset);
    CPU_SET(cpu_id, &cpuset);

    // 设置线程的CPU亲和性
    s = pthread_setaffinity_np(thread, sizeof(cpu_set_t), &cpuset);
    if (s != 0) {
        perror("pthread_setaffinity_np");
        exit(EXIT_FAILURE);
    }

    // 验证设置是否成功
    s = pthread_getaffinity_np(thread, sizeof(cpu_set_t), &cpuset);
    if (s != 0) {
        perror("pthread_getaffinity_np");
        exit(EXIT_FAILURE);
    }

    // 打印CPU亲和性设置结果
    for (int i = 0; i < CPU_SETSIZE; i++) {
        if (CPU_ISSET(i, &cpuset)) {
            printf("Thread %lu is running on CPU %d\n", thread, i);
        }
    }
}

// 线程函数
void* thread_function(void* arg) {
    // 设置本线程的CPU亲和性到CPU 0
    set_thread_affinity(pthread_self(), 0);

    // 执行线程的工作...
    return NULL;
}

int main() {
    pthread_t thread;

    // 创建线程
    if (pthread_create(&thread, NULL, thread_function, NULL) != 0) {
        perror("pthread_create");
        return 1;
    }

    // 等待线程结束
    if (pthread_join(thread, NULL) != 0) {
        perror("pthread_join");
        return 1;
    }

    return 0;
}

设置本线程的CPU亲和性到CPU 0使用的函数是 set_thread_affinity(pthread_self(), 0),使用CPU_ZEROCPU_SET宏来初始化一个CPU集合并设置亲和性掩码。

 2,进程绑定内核,绑定某个进程到某一个核(核亲和性)

#include <stdio.h>
#include <stdlib.h>
#include <sched.h>
#include <unistd.h>

int main() {
    cpu_set_t cpuset;
    pid_t pid;

    // 获取当前进程的PID
    pid = getpid();

    // 清空CPU集合并设置亲和性掩码
    CPU_ZERO(&cpuset);
    // 假设我们要绑定到第0个CPU核心上
    CPU_SET(0, &cpuset);

    // 设置当前进程的CPU亲和性
    if (sched_setaffinity(pid, sizeof(cpuset), &cpuset) == -1) {
        perror("sched_setaffinity");
        exit(EXIT_FAILURE);
    }

    // 打印进程ID和设置的CPU亲和性
    printf("Process %d bound to CPU %d\n", pid, 0);

    // 为了演示效果,让进程睡眠一段时间
    sleep(60);

    return EXIT_SUCCESS;
}

查看绑定效果,taskset -p <PID>

taskset -p 688

pid 688's current affinity mask: 1

相关文章:

linux 进程/线程设置核亲和性

1&#xff0c;线程绑定内核 #include <pthread.h> #include <stdio.h> #include <stdlib.h> // 定义一个函数&#xff0c;用于设置线程的CPU亲和性 void set_thread_affinity(pthread_t thread, int cpu_id) { cpu_set_t cpuset; int s; // 清空CPU集…...

前端页面鼠标移动监控(鼠标运动、鼠标监控)鼠标节流处理、throttle、限制触发频率(setTimeout、clearInterval)

文章目录 使用lodashjs库手动实现节流&#xff08;通过判断之前设定的定时器setTimeout是否存在&#xff09; 使用lodashjs库 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Com…...

【MySQL基础-21】MySQL事务机制详解:原理、实现与最佳实践

在现代数据库系统中&#xff0c;事务机制是确保数据一致性和完整性的核心技术。MySQL作为最流行的开源关系型数据库之一&#xff0c;其事务实现机制对于开发者而言至关重要。本文将深入探讨MySQL的事务机制&#xff0c;包括核心概念、实现原理、隔离级别以及实际应用中的最佳实…...

Transformer+BO-SVM时间序列预测(Matlab)

TransformerBO-SVM时间序列预测&#xff08;Matlab&#xff09; 目录 TransformerBO-SVM时间序列预测&#xff08;Matlab&#xff09;效果一览基本介绍程序设计参考资料 效果一览 基本介绍 普通的单变量时序已经用腻了&#xff0c;审稿人也看烦了&#xff0c;本期推出一期高创…...

Python循环控制语句

1. 循环类型概述 Python提供两种主要的循环结构&#xff1a; while循环 - 在条件为真时重复执行for循环 - 遍历序列中的元素 2. while循环 基本语法 while 条件表达式:循环体代码示例 count 0 while count < 5:print(f"这是第{count1}次循环")count 13. f…...

4.4日西南竞篮,欧篮联,NBA,全扫盘

欧篮联扫盘 301奥林匹亚 vs 阿尔巴 &#xff08;11.5&#xff09;&#xff0c;总分167.5&#xff1a;阿尔巴有伤病&#xff0c;点差11.5大&#xff0c;可能是接近比赛&#xff0c;总分较低&#xff0c;预测阿尔巴赢盘&#xff0c;总分低于167.5。 302埃菲斯 vs 贝红星 (-1.5)&a…...

面试可能会遇到的问题回答(嵌入式软件开发部分)

写在前面&#xff1a; 博主也是刚入社会的小牛马&#xff0c;如果下面有写的不好或者写错的地方欢迎大家指出~ 一、四大件基础知识 1、计算机组成原理 &#xff08;1&#xff09;简单介绍一下中断是什么。 ①回答&#xff1a; ②难度系数&#xff1a;★★ ③难点分析&…...

AI平台初步规划实现和想法

要实现一个类似Coze的工作流搭建引擎&#xff0c;可以结合SmartEngine作为后端工作流引擎&#xff0c;ReactFlow作为前端流程图渲染工具&#xff0c;以及Ant Design作为UI组件库。以下是实现的步骤和关键点&#xff1a; ### 1. 后端工作流引擎&#xff08;SmartEngine&#xf…...

软件工程面试题(二十七)

1、j a v a 对象初始化顺序 1.类的初始化(initialization class & interface) 2.对象的创建(creation of new class instances) 顺序:应为类的加载肯定是第一步的,所以类的初始化在前。大体的初始化顺序是: 类初始化 -> 子类构造函数 -> 父类构造函数 -&g…...

CCF GESP C++编程 六级认证真题 2025年3月

C 六级 2025 年 03 月 题号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 答案 D B A B B B B A A A A A B C A 一、单选题 第 1 题 在面向对象编程中&#xff0c;类是一种重要的概念。下面关于类的描述中&#xff0c;不正确的是&#xff08; &#xff09;。 A. 类是一个抽象的概念&a…...

Cortex-M 上编写汇编函数

在 ARM Cortex-M 系列单片机中使用汇编语言编写函数时,需要特别注意寄存器的使用、栈管理、调用约定以及与 C 语言的兼容性。以下是关键注意事项和示例说明: 1. 遵循 AAPCS 调用约定 ARM 定义了 AAPCS(ARM Architecture Procedure Call Standard),规定了函数调用时寄存器…...

Spring 核心技术解析【纯干货版】- XXII:Spring 扫描效率提升模块 Spring-Context-Indexer 模块精讲

在 Spring 应用 中&#xff0c;组件扫描&#xff08;Component Scan&#xff09; 是 Spring 容器启动时的关键任务之一。默认情况下&#xff0c;Spring 通过 反射扫描整个类路径 来找到所有 Component、Service、Repository 等注解的类&#xff0c;并将其注册为 Spring Bean。但…...

jetson AGX orin--ARM64 换源报错Packages 404 Not Found [IP: 2402:f000:1:400::2 443]

问题 原因&#xff1a; ARM64结构不能使用X86结构的源&#xff0c;清华源不完全支持ARM64。使用下面这个源 sudo vim /etc/apt/sources.list 删掉原来的&#xff0c;改成这个 # ARM64 架构专用源 deb [archarm64] http://ports.ubuntu.com/ubuntu-ports focal main restrict…...

对备忘录模式的理解

对备忘录模式的理解 一、场景1、题目【[来源](https://kamacoder.com/problempage.php?pid1095)】1.1 题目描述1.2 输入描述1.3 输出描述1.4 输入示例1.5 输出示例 2、理解需求 二、不采用备忘录设计模式1、代码2、问题3、错误的备忘录模式 三、采用备忘录设计模式1、代码1.1 …...

ngx_ssl_init

定义在 src\event\ngx_event_openssl.c ngx_int_t ngx_ssl_init(ngx_log_t *log) { #if OPENSSL_VERSION_NUMBER > 0x10100003Lif (OPENSSL_init_ssl(OPENSSL_INIT_LOAD_CONFIG, NULL) 0) {ngx_ssl_error(NGX_LOG_ALERT, log, 0, "OPENSSL_init_ssl() failed")…...

Roo Code(前身为 Roo Cline)一个 AI 驱动的自主编码代理

Roo Code&#xff08;前身为 Roo Cline&#xff09; Roo Code 是一个 AI 驱动的自主编码代理&#xff0c;它存在于您的编辑器中。它可以&#xff1a; 用自然语言沟通直接在您的工作区读写文件运行终端命令自动化浏览器操作与任何 OpenAI 兼容或自定义的 API/模型集成通过自定…...

每日一题洛谷P8649 [蓝桥杯 2017 省 B] k 倍区间c++

P8649 [蓝桥杯 2017 省 B] k 倍区间 - 洛谷 (luogu.com.cn) #include <iostream> #include <vector> using namespace std; #define int long long signed main() {int n, k;cin >> n >> k;vector<int> a(n 1);vector<int> sum(n 1);vec…...

CLion安装、配置及使用

目录 1 CLion是什么 2 CLion安装 3 系统环境变量配置 4 CLion配置 4.1 编辑器选择 4.2 编辑器配置 4.3 新建项目 5 总结 1 CLion是什么 CLion 是 JetBrains 推出的一款跨平台集成开发环境&#xff08;IDE&#xff09;&#xff0c;专为 C 和 C 开发设计&#xff0c;支…...

UE5把动画导出为视频格式

UE5把动画导出为视频格式 步骤一 点击渲染视频或图片按钮旁边的三个圆点按钮 步骤二 点击渲染视频或图片按钮 步骤三 1是修改输出视频的帧率格式 2输出视频的路径 3点击等待视频渲染完成 以上是基本方法 最新的输出视频方法请看这位大佬的视频...

SQL语句(三)—— DQL

目录 基本语法 一、基础查询 1、查询多个字段 2、字段设置别名 3、去除重复记录 4、示例代码 二、条件查询 1、语法 2、条件列表常用的运算符 3、示例代码 三、分组查询 &#xff08;一&#xff09;聚合函数 1、介绍 2、常见的聚合函数 3、语法 4、示例代码 &…...

[2017][note]基于空间交叉相位调制的两个连续波在few layer铋Bi中的全光switch——

前言 类型 太赫兹 + 全光开关 太赫兹 + 全光开关 太赫兹+全光开关 期刊 A C S P H O T O N...

第十九节课: python第四周课程:程序分支结构详解

程序分支结构 1. 单分支结构 语法结构&#xff1a; if <条件>:<代码块>执行逻辑&#xff1a; 条件为真时执行代码块类似自然语言中的"如果…则…" 应用案例&#xff1a; # 猜数字示例 guess eval(input("请输入数字&#xff1a;")) if …...

NSSCTF [HGAME 2023 week1]simple_shellcode

3488.[HGAME 2023 week1]simple_shellcode 手写read函数shellcode和orw [HGAME 2023 week1]simple_shellcode (1) motalymotaly-VMware-Virtual-Platform:~/桌面$ file vuln vuln: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpret…...

图形渲染中的定点数和浮点数

三种API的NDC区别 NDC全称&#xff0c;Normalized Device Coordinates Metal、Vulkan、OpenGL的区别如下&#xff1a; featureOpenGL NDCMetal NDCVulkan NDC坐标系右手左手右手z值范围[-1,1][0,1][0,1]xy视口范围[-1,1][-1,1][-1,1] GPU渲染的定点数和浮点数 定点数类型&a…...

报考高校辅导员需要具备哪些条件?

报考高校辅导员通常需要具备以下条件&#xff1a; 基本条件 国籍与政治面貌&#xff1a;具有中华人民共和国国籍&#xff0c;一般要求是中共党员&#xff08;含预备党员&#xff09;。道德品质&#xff1a;遵守宪法和法律&#xff0c;具有良好的品行&#xff0c;作风正派&…...

什么是Stop The World

深入解析Stop-The-World&#xff08;STW&#xff09;&#xff1a;JVM垃圾回收的"世界暂停"现象 1. 什么是Stop-The-World&#xff08;STW&#xff09;&#xff1f; Stop-The-World&#xff08;STW&#xff09; 是JVM在执行垃圾回收&#xff08;GC&#xff09;时的一…...

Promise 详细说明、常用方法

Promise 详细说明 上一节&#xff1a;认识 Promise 1. 常用的几种方法 1.1 resolve 方法 resolve 方法作用&#xff1a;将一个普通的值转换成 Promise 类型的数据 方法的状态与结果受参数影响&#xff1a; 参数非 Promise 对象&#xff0c;将返回一个 Promise 对象&#xf…...

大模型学习四:‌DeepSeek Janus-Pro 多模态理解和生成模型 本地部署与调用指南

一、说明简介 ‌DeepSeek Janus-Pro‌是一款先进的多模态理解和生成模型&#xff0c;旨在实现高质量的文本-图像生成与多模态理解。它是由DeepSeek团队研发的&#xff0c;是之前Janus模型的升级版&#xff0c;能够同时处理文本和图像&#xff0c;即可以理解图片内容&#xff0c…...

康托展开原理

康托展开&#xff08;Cantor Expansion&#xff09; 康托展开是一种用于排列唯一编码的方法&#xff0c;可以把一个排列转换成一个整数&#xff0c;并且能够从整数反向解析出原排列。主要用于排列的唯一表示、字典序排名、全排列生成等问题。 1. 康托展开公式 给定一个长度为…...

RESTful如何传递参数

文章目录 前言一、REST 遵循核心原则二、REST 的优点和缺点1.优点2.缺点 三、常见参数传递方式1&#xff09;路径参数&#xff08;Path Parameters&#xff09;2&#xff09;查询参数&#xff08;Query Parameters&#xff09;3&#xff09;请求体参数&#xff08;Request Body…...

Java 大视界 -- 基于 Java 的大数据机器学习模型在图像识别中的迁移学习与模型优化(173)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…...

Pascal语言的贪心算法

贪心算法与Pascal语言 引言 在算法设计与分析中&#xff0c;贪心算法是一类重要的算法策略。它以一种直接而高效的方式解决问题&#xff0c;尤其适合那些可以通过局部最优解推导出全局最优解的问题。在本文中&#xff0c;我们将探讨贪心算法的基本概念、工作原理及其在Pascal…...

软件设计师之设计模式

设计模式&#xff08;Design pattern&#xff09;代表了最佳的实践&#xff0c;通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。…...

洛谷题单3-P1720 月落乌啼算钱(斐波那契数列)-python-流程图重构

题目描述 给定一个整数 N N N&#xff0c;请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式&#xff0c;即除非给定的原数为零&#xff0c;否则反转后得到的新数的最高位数字不应为零&#xff08;参见样例 2&#xff09;。 输入格式 一个整数 N N N。 …...

WinForm真入门(5)——控件的基类Control

控件的基类–Control 用于 Windows 窗体应用程序的控件都派生自 Control类并继承了许多通用成员,这些成员都是平时使用控件的过程最常用到的。无论要学习哪个控件的使用&#xff0c;都离不开这些基本成员&#xff0c;尤其是一些公共属性。由于 Conlrol 类规范了控件的基本特征…...

第一讲—函数的极限与连续(一)

思维导图 笔记 双曲正弦函数及其反函数...

开发一个项目的顺序

目录 1.设计表 2.写好pom.xml和application.yml文件 &#xff08;设置端口号&#xff0c;配置数据源&#xff09; 3.引入一个插件&#xff0c;帮助自动生成dao层&#xff0c;model层和mapper目录的代码 4.接着配置mybatis的扫描路径&#xff0c;产生这些文件后&#xff0c;…...

第P10周:Pytorch实现车牌识别

&#x1f368; 本文为&#x1f517;365天深度学习训练营中的学习记录博客 &#x1f356; 原作者&#xff1a;K同学啊 一.导入数据 from torchvision.transforms import transforms from torch.utils.data import DataLoader from torchvision import datase…...

如何在 Windows 上安装 Python

Python是一种高级编程语言&#xff0c;由于其简单性、多功能性和广泛的应用范围而变得越来越流行。如何在 Windows 操作系统中安装 Python 的过程相对简单&#xff0c;只需几个简单的步骤。 本文旨在指导您完成在 Windows 计算机上下载和安装 Python 的过程。 如何在 Windows…...

探秘区块链开发:智能合约在 DApp 中的地位及与传统开发差异

从:引言:当我们谈论区块链开发时,实际在讨论什么?,我们已经能够知道,当我们在讨论区块链开发的时候,大多数时间里说的就是DApp开发。 那么DApp是由什么组成的呢?从上篇文章的特征中我们得出一个技术名词”智能合约“。这是DApp的一个重要特征,也是DApp的一个重要组成…...

react redux的学习,多个reducer

redux系列文章目录 第一章 简单学习redux,单个reducer 前言 前面我们学习到的是单reducer的使用&#xff1b;要知道redux是个很强大的状态存储库&#xff0c;可以支持多个reducer的使用。 combineReducers ‌combineReducers‌是Redux中的一个辅助函数&#xff0c;主要用于…...

SadTalker 数字人web网页版-不需要GPU也可以跑

数字人启动 Active code page: 65001 开始运行 Python 3.10.11 (tags/v3.10.11:7d4cc5a, Apr 5 2023, 00:38:17) [MSC v.1929 64 bit (AMD64)] Commit hash: <none> Installing requirements for SadTalker WebUI (may take longer time in first time) Launching SadT…...

最少刷题数--二分+排序

1.考虑重复&#xff0c;题意是多的不超过少的&#xff0c;等于不算 2.所以中间的要二分判断 3.同时排序后要刷的题数也可能是pos-i&#xff0c;也可能是pos-i1&#xff0c;也要判断一下 #include<bits/stdc.h> using namespace std; #define N 100011 typedef long lo…...

花卉识别分类系统,Python/resnet18/pytorch

花卉识别分类系统,Python/resnet18/pytorch 基于pytorch训练, resnet18网络&#xff0c;可用于训练其他分类问题&#xff0c;也可自己重新训练 共五种花卉&#xff1a;雏菊&#xff0c;蒲公英&#xff0c;玫瑰&#xff0c;向日葵&#xff0c;郁金香 标价包含GUI源码、数据集…...

基于 .NET 8 + Lucene.Net + 结巴分词实现全文检索与匹配度打分实战指南

文章目录 前言一、技术选型与优势1.1 技术栈介绍1.2 方案优势 二、环境搭建与配置2.1 安装 NuGet 包2.2 初始化核心组件 三、索引创建与文档管理3.1 构建索引3.2 动态更新策略 四、搜索与匹配度排序4.1 执行搜索4.2 自定义评分算法&#xff08;扩展&#xff09; 五、高级优化技…...

【图像处理基石】什么是neural style transfer?

1. 什么是neural style transfer? 神经风格迁移&#xff08;Neural Style Transfer&#xff09;是一种利用深度学习技术将一幅图像的风格&#xff08;如笔触、色彩、纹理等&#xff09;与另一幅图像的内容&#xff08;如物体、场景结构&#xff09;结合的方法。其核心思想是通…...

ubuntu20.04升级成ubuntu22.04

命令行 sudo do-release-upgrade 我是按提示输入y确认操作&#xff0c;也可以遇到配置文件冲突时建议选择N保留当前配置...

【C++奇遇记】C++中的进阶知识(继承(一))

&#x1f3ac; 博客主页&#xff1a;博主链接 &#x1f3a5; 本文由 M malloc 原创&#xff0c;首发于 CSDN&#x1f649; &#x1f384; 学习专栏推荐&#xff1a;LeetCode刷题集 数据库专栏 初阶数据结构 &#x1f3c5; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如…...

SpringBoot异步任务实践指南:提升系统性能的利器

精心整理了最新的面试资料和简历模板&#xff0c;有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 引言 在现代Web应用中&#xff0c;高并发场景下的响应速度和资源利用率是系统设计的重要考量。SpringBoot通过简洁的异步任务机制&#xff0c;帮助开发者轻松…...

Gson修仙指南:谷歌大法的佛系JSON渡劫手册

各位在代码世界打坐修行的道友们&#xff01;今天我们要参悟Google出品的JSON心法——Gson&#xff01;这货就像代码界的扫地僧&#xff0c;表面朴实无华&#xff0c;实则内力深厚&#xff0c;专治各种JSON不服&#xff01;准备好迎接"万物皆可JSON"的顿悟时刻了吗&a…...