linux cgroups 笔记

安装stress来测试资源限制


package main

import (

"fmt"

"io/ioutil"

"os"

"os/exec"

"path"

"strconv"

"syscall"

)

const root = "/sys/fs/cgroup/memory"

const self = "/proc/self/exe"

func main() {

if os.Args[0] == self {

cmd := exec.Command("sh", "-c", "stress --vm-bytes 400m --vm-keep -m 1")

cmd.SysProcAttr = &syscall.SysProcAttr{}

cmd.Stdin = os.Stdin

cmd.Stdout = os.Stdout

cmd.Stderr = os.Stderr

if err := cmd.Run(); err != nil {

fmt.Println(err)

}

os.Exit(1)

}

cmd := exec.Command(self)

cmd.Stdin = os.Stdin

cmd.Stdout = os.Stdout

cmd.Stderr = os.Stderr

if err := cmd.Start(); err != nil {

fmt.Println(err)

os.Exit(1)

} else {

file := path.Join(root, "mtt1")

os.Mkdir(file, 0755)

ioutil.WriteFile(file, []byte(strconv.Itoa(cmd.Process.Pid)), 0644)

}

cmd.Process.Wait()

}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 谈到docker源码,其实网上有很多的源码的分析的文章,也看过一些大牛写的docker源码解读的文章,收获很大。我...
    跨界师阅读 5,144评论 2 3
  • 为何叫做 shell ? shell prompt(PS1) 与 Carriage Return(CR) 的关系?...
    Zero___阅读 8,406评论 3 49
  • 映射当前用户用户成子进程的root,用来隔离user namespace 子user namespace 在父 u...
    wwq2020阅读 3,644评论 0 0
  • 隔离各个进程的挂载点视图. mount namespace中进行的mount,umount不会影响全局 运行后mo...
    wwq2020阅读 3,437评论 0 0
  • 昨天照镜子练习,看着自己身体周围的光圈,突然觉知自己很富有,回想起泰山时三车和尚师兄说我:你本来是能量很高的巨富财...
    琪慧心灵氧吧阅读 3,365评论 0 2