日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機(jī) > CPP開發(fā)者
[導(dǎo)讀]昨天在群里有朋友問:把進(jìn)程綁定到某個(gè)CPU上運(yùn)行是怎么實(shí)現(xiàn)的。首先,我們先來了解下將進(jìn)程與CPU進(jìn)行綁定的好處。進(jìn)程綁定CPU的好處:在多核CPU結(jié)構(gòu)中,每個(gè)核心有各自的L1、L2緩存,而L3緩存是共用的。如果一個(gè)進(jìn)程在核心間來回切換,各個(gè)核心的緩存命中率就會受到影響。相反如果進(jìn)...

昨天在群里有朋友問:把進(jìn)程綁定到某個(gè) CPU 上運(yùn)行是怎么實(shí)現(xiàn)的。

首先,我們先來了解下將進(jìn)程與 CPU 進(jìn)行綁定的好處。

進(jìn)程綁定 CPU 的好處:在多核 CPU 結(jié)構(gòu)中,每個(gè)核心有各自的L1、L2緩存,而L3緩存是共用的。如果一個(gè)進(jìn)程在核心間來回切換,各個(gè)核心的緩存命中率就會受到影響。相反如果進(jìn)程不管如何調(diào)度,都始終可以在一個(gè)核心上執(zhí)行,那么其數(shù)據(jù)的L1、L2 緩存的命中率可以顯著提高。

所以,將進(jìn)程與 CPU 進(jìn)行綁定可以提高 CPU 緩存的命中率,從而提高性能。而進(jìn)程與 CPU 綁定被稱為:CPU 親和性

設(shè)置進(jìn)程的 CPU 親和性

前面介紹了進(jìn)程與 CPU 綁定的好處后,現(xiàn)在來介紹一下在 Linux 系統(tǒng)下怎么將進(jìn)程與 CPU 進(jìn)行綁定的(也就是設(shè)置進(jìn)程的 CPU 親和性)。

Linux 系統(tǒng)提供了一個(gè)名為?sched_setaffinity?的系統(tǒng)調(diào)用,此系統(tǒng)調(diào)用可以設(shè)置進(jìn)程的 CPU 親和性。我們來看看?sched_setaffinity?系統(tǒng)調(diào)用的原型:

int?sched_setaffinity(pid_t?pid,?size_t?cpusetsize,?const?cpu_set_t?*mask);
下面介紹一下?sched_setaffinity?系統(tǒng)調(diào)用各個(gè)參數(shù)的作用:

  • pid:進(jìn)程ID,也就是要進(jìn)行綁定 CPU 的進(jìn)程ID。
  • cpusetsize:mask 參數(shù)所指向的 CPU 集合的大小。
  • mask:與進(jìn)程進(jìn)行綁定的 CPU 集合(由于一個(gè)進(jìn)程可以綁定到多個(gè) CPU 上運(yùn)行)。
參數(shù)?mask?的類型為?cpu_set_t,而?cpu_set_t?是一個(gè)位圖,位圖的每個(gè)位表示一個(gè) CPU,如下圖所示:



例如,將?cpu_set_t?的第0位設(shè)置為1,表示將進(jìn)程綁定到 CPU0 上運(yùn)行,當(dāng)然我們可以將進(jìn)程綁定到多個(gè) CPU 上運(yùn)行。

我們通過一個(gè)例子來介紹怎么通過?sched_setaffinity?系統(tǒng)調(diào)用來設(shè)置進(jìn)程的 CPU 親和性:

#define?_GNU_SOURCE
#include?
#include?
#include?
#include?
#include?
#include?

int?main(int?argc,?char?**argv)
{
????cpu_set_t?cpuset;

????CPU_ZERO(
本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉