zoukankan      html  css  js  c++  java
  • DPDK(二):准备知识2 --- cgroup

    原文: http://coolshell.cn/articles/17049.html
    一、简介
    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

  • 相关阅读:
    常用加密解密类(含3des)
    谷歌API(Ajax)
    flashpaper使用详解
    布置小窝
    CodeSimth数据访问层模板
    CodeSmith业务逻辑层模板
    CodeSimth生成实体类模板
    C# 参考之方法参数关键字:params、ref及out
    ALV 格式常用参数
    BOM输出
  • 原文地址:https://www.cnblogs.com/xiaomayi-cyj/p/10542932.html
Copyright © 2011-2022 走看看