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

建设网站好学吗沈阳网站开发久

建设网站好学吗,沈阳网站开发久,中小企业电子商务网站建设,怎么让别人访问自己做的网站前面我们简单说了下namespace#xff0c; 现在我们来接着简单说说cgroup。通过docker-简单说说namespace文章我们知道#xff1a; namespace 是为了隔离进程组之间的资源#xff0c;那cgroup就是为了对进程组的监控和限制资源。Cgroup 可以限制进程组使用的资源数量和分配 现在我们来接着简单说说cgroup。通过docker-简单说说namespace文章我们知道 namespace 是为了隔离进程组之间的资源那cgroup就是为了对进程组的监控和限制资源。Cgroup 可以限制进程组使用的资源数量和分配包括CPU、内存、网络带宽、磁盘I/O等并将它们隔离到一个或多个分层的分组中以实现对进程、任务或用户组的资源限制。这使得 Cgroup 成为用于容器隔离的关键技术并可以帮助保护系统免受不安全或恶意代码的破坏 什么是cgroup cgroupcontrol groups是Linux下的一种将进程按组进行管理的机制在用户层看来cgroup技术就是把系统中的所有进程组织成一颗一颗独立的树每棵树都包含系统的所有进程树的每个节点是一个进程组而每颗树又和一个或者多个subsystem关联树的作用是将进程分组而subsystem的作用就是对这些组进行操作。 主要功能 它主要提供了如下功能 Resource limitation: 限制资源使用比如内存使用上限以及文件系统的缓存限制。Prioritization: 优先级控制比如CPU利用和磁盘IO吞吐。Accounting: 一些审计或一些统计主要目的是为了计费。Control: 挂起进程恢复执行进程。 核心概念 1- subsystem cgroup中的subsystem就是一个资源调度控制器(Resource Controller)。subsystem被关联到一颗cgroup 树上就会在树上节点做具体操作用来调度或者限制进程的资源。比如CPU子系统可以控制CPU时间分配内存子系统可以限制cgroup内存使用量 2- hierarchy hierarchy由一系列cgroup以一个树状结构排列而成树的每个节点就是一个进程组每个hierarchy通过绑定对应的subsystem进行资源调度。hierarchy中的cgroup节点可以包含零或多个子节点子节点继承父节点的属性。 3- task 在Cgroup中task就是系统的一个进程 操作 本文使用环境centos3.10.0 , cgroup v1 如何查看当前系统支持哪些subsystem [rootlinjian ~]# cat /proc/cgroups #subsys_name hierarchy num_cgroups enabled cpuset 6 9 1 cpu 5 81 1 cpuacct 5 81 1 memory 8 79 1 devices 11 78 1 freezer 10 9 1 net_cls 3 9 1 blkio 2 78 1 perf_event 7 9 1 hugetlb 4 9 1 pids 9 78 1 net_prio 3 9 1 subsys_name subsystem的名字 hierarchy subsystem关联的cgroup树的id如果多个subsystem关联到同一颗cgroup树那么他们的hierarchy数据一样。 当以下情况hierarchy 字段将为0 当前subsystem没有和任何cgroup树绑定当前subsystem已经和cgroup v2的树绑定当前subsystem没有被内核开启 num_cgroupssubsystem关联cgroup树中进程组的个数树上节点的个数。 enabled1开启0关闭 查看cgroup是否开启 [rootlinjian ~]# uname -r 3.10.0-1160.24.1.el7.x86_64 [rootlinjian ~]# cat /boot/config-3.10.0-1160.24.1.el7.x86_64 | grep CGROUP CONFIG_CGROUPSy # y 已经开启了 # CONFIG_CGROUP_DEBUG is not set CONFIG_CGROUP_FREEZERy CONFIG_CGROUP_PIDSy CONFIG_CGROUP_DEVICEy CONFIG_CGROUP_CPUACCTy CONFIG_CGROUP_HUGETLBy CONFIG_CGROUP_PERFy CONFIG_CGROUP_SCHEDy CONFIG_BLK_CGROUPy # CONFIG_DEBUG_BLK_CGROUP is not set CONFIG_NETFILTER_XT_MATCH_CGROUPm CONFIG_NET_CLS_CGROUPy CONFIG_NETPRIO_CGROUPy 查看cgroup 使用版本 stat -fc %T /sys/fs/cgroup/ 如果v2输出为 cgroup2fs v1 输出 tmpfs [rootlinjian ~]# stat -fc %T /sys/fs/cgroup/ tmpfs 查看当前进程属于哪些cgroup [rootlinjian ~]# cat /proc/$$/cgroup 11:devices:/user.slice 10:freezer:/ 9:pids:/user.slice 8:memory:/user.slice 7:perf_event:/ 6:cpuset:/ 5:cpuacct,cpu:/user.slice 4:hugetlb:/ 3:net_prio,net_cls:/ 2:blkio:/user.slice 1:namesystemd:/user.slice/user-0.slice/session-1422.scope 冒号隔开 第一个cgroup树的ID与/proc/cgroups文件中的ID一一对应。 第二个和cgroup树绑定的所有subsystem多个subsystem用逗号隔开。如果namesystemd表示没有和任何subsystem绑定。 第三个进程在cgroup树中的路径挂载点的相对路径即进程所属的cgroup。 查看目前Linux支持的subsystem12种 [rootlinjian ~]# ls -lh /sys/fs/cgroup total 0 drwxr-xr-x 5 root root 0 Dec 26 23:00 blkio lrwxrwxrwx 1 root root 11 Dec 26 23:00 cpu - cpu,cpuacct lrwxrwxrwx 1 root root 11 Dec 26 23:00 cpuacct - cpu,cpuacct drwxr-xr-x 8 root root 0 Jan 2 10:01 cpu,cpuacct drwxr-xr-x 3 root root 0 Dec 26 23:00 cpuset drwxr-xr-x 5 root root 0 Dec 26 15:02 devices drwxr-xr-x 3 root root 0 Dec 26 23:00 freezer drwxr-xr-x 3 root root 0 Dec 26 23:00 hugetlb drwxr-xr-x 6 root root 0 Jan 2 10:01 memory lrwxrwxrwx 1 root root 16 Dec 26 23:00 net_cls - net_cls,net_prio drwxr-xr-x 3 root root 0 Dec 26 23:00 net_cls,net_prio lrwxrwxrwx 1 root root 16 Dec 26 23:00 net_prio - net_cls,net_prio drwxr-xr-x 3 root root 0 Dec 26 23:00 perf_event drwxr-xr-x 5 root root 0 Dec 26 23:00 pids drwxr-xr-x 5 root root 0 Dec 26 23:00 systemd cpu 限制cgroup的CPU使用率。cpuacct 统计cgroup的CPU的使用率。cpuset绑定cgroup到指定CPUs和NUMA节点。memory 统计和限制cgroup的内存的使用率包括process memory, kernel memory, 和swap。devices 限制cgroup创建(mknod)和访问设备的权限。freezer suspend和restore一个cgroup中的所有进程。net_cls 将一个cgroup中进程创建的所有网络包加上一个classid标记用于tc和iptables。 只对发出去的网络包生效对收到的网络包不起作用。blkio 限制cgroup访问块设备的IO速度。perf_event 对cgroup进行性能监控net_prio 针对每个网络接口设置cgroup的访问优先级。hugetlb 限制cgroup的huge pages的使用量。pids 限制一个cgroup及其子孙cgroup中的总进程数。 cgroup操作 挂载cgroup [rootlinjian home]# mkdir cgroupTest [rootlinjian home]# cd cgroupTest/ [rootlinjian cgroupTest]# ls [rootlinjian cgroupTest]# mkdir demo01 # 创建一颗新的cgroup树然后挂载到demo01目录 [rootlinjian cgroupTest]# mount -t cgroup -o none,namedemo01 demo01 ./demo01 [rootlinjian cgroupTest]# cd demo01/ [rootlinjian demo01]# ls -lha total 4.0K drwxr-xr-x 2 root root 0 Jan 3 20:47 . drwxr-xr-x 3 root root 4.0K Jan 3 20:44 .. -rw-r--r-- 1 root root 0 Jan 3 20:47 cgroup.clone_children --w--w--w- 1 root root 0 Jan 3 20:47 cgroup.event_control -rw-r--r-- 1 root root 0 Jan 3 20:47 cgroup.procs -r--r--r-- 1 root root 0 Jan 3 20:47 cgroup.sane_behavior -rw-r--r-- 1 root root 0 Jan 3 20:47 notify_on_release -rw-r--r-- 1 root root 0 Jan 3 20:47 release_agent -rw-r--r-- 1 root root 0 Jan 3 20:47 tasks [rootlinjian demo01]# wc -l cgroup.procs 131 cgroup.procs 创建/删除cgroup [rootlinjian demo01]# mkdir cgroupT01 // 创建子cgroup [rootlinjian demo01]# cd cgroupT01/ [rootlinjian cgroupT01]# ls cgroup.clone_children cgroup.event_control cgroup.procs notify_on_release tasks [rootlinjian cgroupT01]# wc -l cgroup.procs 0 cgroup.procs [rootlinjian cgroupT01]# cd .. [rootlinjian demo01]# rmdir cgroupT01 // 删除 [rootlinjian demo01]# ls cgroup.clone_children cgroup.event_control cgroup.procs cgroup.sane_behavior notify_on_release release_agent tasks 限制进程数 客户端1 [rootlinjian ~]# mount|grep pids cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids) [rootlinjian ~]# cd /sys/fs/cgroup/pids/ [rootlinjian pids]# mkdir limitTest [rootlinjian pids]# cd limitTest/ [rootlinjian limitTest]# ls cgroup.clone_children cgroup.event_control cgroup.procs notify_on_release pids.current pids.max tasks [rootlinjian limitTest]# cat pids.max max [rootlinjian limitTest]# cat pids.current 0 [rootlinjian limitTest]# echo 1 pids.max [rootlinjian limitTest]# echo $$ cgroup.procs pids.current: 表示当前cgroup及其所有子孙cgroup中现有的总的进程数量 pids.max: 当前cgroup及其所有子孙cgroup中所允许创建的总的最大进程数量 客户端2 [rootlinjian ~]# cd /sys/fs/cgroup/pids/ [rootlinjian pids]# mkdir limitTest [rootlinjian pids]# cd limitTest/ [rootlinjian limitTest]# ls cgroup.clone_children cgroup.event_control cgroup.procs notify_on_release pids.current pids.max tasks [rootlinjian limitTest]# cat pids.max max [rootlinjian limitTest]# cat pids.current 0 客户端1 # 创建新进程失败 [rootlinjian limitTest]# ls -bash: fork: retry: No child processes -bash: fork: retry: No child processes -bash: fork: retry: No child processes 限制内存使用 [rootlinjian ~]# mount|grep memory cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory) [rootlinjian ~]# cd /sys/fs/cgroup/memory # 创建子group [rootlinjian memory]# mkdir limitTest [rootlinjian memory]# cd limitTest/ [rootlinjian limitTest]# ls cgroup.clone_children memory.kmem.limit_in_bytes memory.kmem.tcp.usage_in_bytes memory.memsw.max_usage_in_bytes memory.soft_limit_in_bytes tasks cgroup.event_control memory.kmem.max_usage_in_bytes memory.kmem.usage_in_bytes memory.memsw.usage_in_bytes memory.stat cgroup.procs memory.kmem.slabinfo memory.limit_in_bytes memory.move_charge_at_immigrate memory.swappiness memory.failcnt memory.kmem.tcp.failcnt memory.max_usage_in_bytes memory.numa_stat memory.usage_in_bytes memory.force_empty memory.kmem.tcp.limit_in_bytes memory.memsw.failcnt memory.oom_control memory.use_hierarchy memory.kmem.failcnt memory.kmem.tcp.max_usage_in_bytes memory.memsw.limit_in_bytes memory.pressure_level notify_on_release [rootlinjian limitTest]# # 查看使用的情况 [rootlinjian limitTest]# cat memory.usage_in_bytes 0 # 查看限定额度 [rootlinjian limitTest]# cat memory.limit_in_bytes 9223372036854771712 # 限定64k [rootlinjian limitTest]# echo 64k memory.limit_in_bytes限制cpu使用 [rootlinjian memory]# mount|grep cpu cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpuacct,cpu) cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset) [rootlinjian memory]# cd /sys/fs/cgroup/cpu,cpuacct [rootlinjian cpu,cpuacct]# mkdir limitTest [rootlinjian cpu,cpuacct]# cd limitTest/ [rootlinjian limitTest]# ls cgroup.clone_children cgroup.procs cpuacct.usage cpu.cfs_period_us cpu.rt_period_us cpu.shares notify_on_release cgroup.event_control cpuacct.stat cpuacct.usage_percpu cpu.cfs_quota_us cpu.rt_runtime_us cpu.stat tasks [rootlinjian limitTest]# cat cpu.cfs_quota_us -1 # 设置只能使用1个cpu的20%的时间 [rootlinjian limitTest]# echo 20000 cpu.cfs_quota_us [rootlinjian limitTest]# cat cpu.cfs_quota_us 20000 [rootlinjian limitTest]# echo $$ 12649 [rootlinjian limitTest]# echo 12649 cgroup.procs [rootlinjian limitTest]# while :; do echo limitTest /dev/null; done客户端2 # 可以看到已经占满了 [rootlinjian ~]# top top - 21:43:19 up 8 days, 6:42, 8 users, load average: 0.01, 0.02, 0.05 Tasks: 135 total, 2 running, 133 sleeping, 0 stopped, 0 zombie %Cpu(s): 8.0 us, 4.7 sy, 0.0 ni, 86.8 id, 0.0 wa, 0.0 hi, 0.5 si, 0.0 st KiB Mem : 3880104 total, 112104 free, 1317032 used, 2450968 buff/cache KiB Swap: 0 total, 0 free, 0 used. 2281320 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME COMMAND 12649 root 20 0 115648 2196 1716 R 20.3 0.1 0:07.64 bash [rootlinjian ~]# cat /sys/fs/cgroup/cpu,cpuacct/limitTest/cpu.stat nr_periods 462 #表示过去了多少个cpu.cfs_period_us里面配置的时间周期 nr_throttled 460 # 在上面的这些周期中有多少次是受到了限制 throttled_time 36266699145 # cgroup中的进程被限制使用CPU持续了多长时间(纳秒)cgroup和namespace区别 namespace为了隔离进程组之间的资源 cgroup为了对一组进程进行的资源监控和限制。
http://www.tj-hxxt.cn/news/217398.html

相关文章:

  • 一站式网站手机端怎么做深圳网站建设价格多少
  • 开封建设网站缙云县建设局网站
  • 佛山网站建设定制开发南京建行网站
  • 扬中网站建设机构天津广告公司排行榜
  • 开发员给我用织梦做的网站什么是网络营销成败的关键
  • 网站老是快照打开WordPress 转移数据
  • 使用wordpress的网站西安做营销型网站建设
  • 嘉兴信息网站工程建设科学技术奖申报网站
  • 长沙网站优化对策深圳的网站建设公司的分类是
  • 广州市区号性能优化大师
  • 做的比较好的几个宠物网站表白网站制作源代码
  • 网站分为做网店在素材网站找的图侵权吗
  • 网站备案号怎么看wordpress付款
  • 成都网站建设scdzks宣城网站 建设
  • 苏州科建设交通学院网站南昌本地生活网站有哪些
  • 漯河河南网站建设雇主品牌建设
  • 搭建cms网站可以玩h5的网站
  • 福建省建设职业注册资格管理中心网站汕头网站建设找千素网
  • 各个做网站的有什么区别可信的免费网站建设
  • 电商平台介绍网站模板广州网站设计建设公司
  • 东莞手机网站制作公司网站为什么建设中
  • 做网站大wordpress分享查看内容
  • 开发一个网站要多久apple 官网网站模板
  • 网站建设的图片台州网站建站公司
  • 推广业务网站建设做签证的网站
  • 北京网站建设公司司开题报告风景区网站开发
  • 全国首批9所重点马院网站建设牡丹江市住房和城乡建设局网站
  • 做科技汽车的视频网站有哪些内容自己做的网站根目录哪里找到
  • 珠宝网站建设要以商为本大良网站建设dwxw
  • 如何做图片网站南海佛山网站建设