DPDK(二) 準備知識2 cgroup

2022-08-20 04:45:11 字數 1686 閱讀 4654

原文:

一、簡介

linux cgroup全稱linux control group,是linux核心的乙個功能,用來限制,控制與分離乙個程序組群的資源(如cpu、記憶體、磁碟輸入輸出等)。

主要提供了如下功能:

resource limitation: 限制資源使用,比如記憶體使用上限以及檔案系統的快取限制。

prioritization: 優先順序控制,比如:cpu利用和磁碟io吞吐。

accounting: 一些審計或一些統計,主要目的是為了計費。

control: 掛起程序,恢復執行程序。

1、限制cpu利用率

第一步:建立cpu cgroup

/* 設定cpu利用率為50% */

mkdir("/sys/fs/cgroup/cpu/haoel", 755);

system("echo 50000 > /sys/fs/cgroup/cpu/haoel/cpu.cfs_quota_us");

mkdir("/sys/fs/cgroup/cpuset/haoel", 755);

/* 限制cpu只能使用#2核和#3核 */

system("echo \"2,3\" > /sys/fs/cgroup/cpuset/haoel/cpuset.cpus");

第二步:加入cgroup

/* 把自己加入cgroup中(syscall(sys_gettid)為得到執行緒的系統tid) */

char cmd[128];

sprintf(cmd, "echo %ld >> /sys/fs/cgroup/cpu/haoel/tasks", syscall(sys_gettid));

system(cmd);

sprintf(cmd, "echo %ld >> /sys/fs/cgroup/cpuset/haoel/tasks", syscall(sys_gettid));

system(cmd);

2、限制記憶體使用率

# 建立memory cgroup

$ mkdir /sys/fs/cgroup/memory/haoel

$ echo 64k > /sys/fs/cgroup/memory/haoel/memory.limit_in_bytes

# 把上面的程序的pid加入這個cgroup

$ echo [pid] > /sys/fs/cgroup/memory/haoel/tasks

3、磁碟i/o限制

第一步:先建立乙個blkio(塊裝置io)的cgroup

mkdir /sys/fs/cgroup/blkio/haoel

第二步:模擬io拷貝

從/dev/sda1上讀入資料,輸出到/dev/null上。

sudo dd if=/dev/sda1 of=/dev/null

iotop命令我們可以看到相關的io速度是55mb/s(虛擬機器內)

第三步:加入cgroup

前面那個dd命令的pid放進去(注:8:0 是裝置號,你可以通過ls -l /dev/sda1獲得)

root@ubuntu:~# echo '8:0 1048576'  > /sys/fs/cgroup/blkio/haoel/blkio.throttle.read_bps_device

root@ubuntu:~# echo 8128 > /sys/fs/cgroup/blkio/haoel/tasks

DPDK(二) 準備知識1 hugepage

邏輯位址的選擇符就對應上面講的cs暫存器,偏移量對應ip暫存器。32位作業系統嫌32的暫存器能表達的資訊太少,不用上面講的直接得出線性位址。而是再做一次轉換,先把段基址存到一塊記憶體,每個段基址佔8位元組 64位 當然這8位元組裡面還含有其他描述資訊,描述符會把index欄位 8得到某個段的描述符的...

第二章 基礎知識和準備

1 基礎知識 雖然在第一章中我們對php進行了簡單的介紹,但在沒有看到具體 之前,我們仍然不甚了解php究竟是什麼,它究竟能做什麼。我們依然採用經典的hello,world 例項來向大家呈現php的功能。下面是hello.php檔案的源 echo hi,i m a php script 該檔案執行後...

多執行緒 二 使用多執行緒的準備知識

一 為什麼要使用多執行緒?使計算機所有資源在執行任務的時候能夠全部利用上,以提公升計算機資源利用率的方式來提公升系統執行效率 cpu的單核執行速度由於硬體技術問題已經遇到瓶頸,而概念性的 光腦 貌似離我們還很遙遠,現在的計算機效能提公升方向是向多核發展。多核同時工作,協同完成任務。大家熟知的神威 太...