云时代【4】—— 资源隔离与控制技术

news2024/11/20 12:38:31

云时代【4】—— 资源隔离与控制技术

  • 二、资源隔离与控制技术
    • (一)NameSpace
      • 1. 基本介绍
      • 2. 相关 Linux 指令
      • 实战1:隔离进程
      • 实战2:隔离文件系统
    • (二)CGroups
      • 1. 基本介绍
      • 2. 相关 Linux 指令
      • 实战1:cgroups 信息查看
      • 实战2:使用 cgroups 对内存进行控制
      • 实战3:使用 cgroups 对 cpu 进行控制

二、资源隔离与控制技术

创建好虚拟机之后,查看 虚拟机 自身的信息

# 该指令是 两个指令的合体
cat /etc/*release*

image.png
image.png

(一)NameSpace

1. 基本介绍

NameSpace 是 Linux 内核用来隔离内核资源的方式。通过 namespace 可以让一些进程只能看到与自己相关的一部分资源,而另外一些进程也只能看到与它们自己相关的资源,这两拨进程根本就感觉不到对方的存在
Linux namespaces 是对全局系统资源的一种封装隔离,使得处于不同 namespace 的 进程拥有独立的全局系统资源,改变一个 namespace 中的系统资源只会影响当前 namespace 里的进程,对其他 namespace 中的进程没有影响。

2. 相关 Linux 指令

(1)dd – 复制文件,根据操作数进行转换和格式化

dd if=/dev/zero of=test.img bs=8k count=1024

# /dev/zero 产生连续不断的空白字符流

image.png
image.png

**(2)mkfs – **Make a Linux filesystem.

mkfs -t ext4 ./test.img

image.png

(3)df – 查看文件系统的相关信息
Show information about the file system on which each FILE resides, or all file systems by default.

df

image.png

df -a # -a, --all 查看所有具有 0Bloeks 的文件系统

image.png

df -h # 人类可读的格式

image.png

df -t tmpfs # 列出 tmpfs 类型的文件系统

image.png

df -T # 现实文件系统的形式

image.png

image.png

**(4)unshare – **与父进程进行命名空间的隔离

ll /proc 

# /proc 是一个虚拟文件系统

image.png

unshare -u /bin/bash # 不共享用户的命名空间

hostname test

hostname # 通过hostname,可以唯一地标识计算机的位置

image.png

(5)mount – Mount a filesystem
挂载就是:文件的入口

dd if=/dev/zero of=test.img bs=8k count=1024

image.png

mkfs -t ext4 ./test.img

# -t 知道文件系统类型

image.png

mount ./test.img /data/testmount

image.png

cd /data/testmymount
echo "hello world" > text.txt
ll -h
cat text.txt

image.png

实战1:隔离进程

**Q1:需要指定子进程 **
当直接 -p 之后 /bin/bash进程 与 父进程完成资源隔离。内部的/bin/bash进程没有自己的父进程,且无法看到外部的父进程,因此报错。

unshare -p /bin/bash

image.png

Q2:当执行ps -ef时发现 PID 依然可以查看到。原因是:**ll /proc**** 下有全部的进程,因此需要提前把 **/proc** 挂载过去**

unshare -p --fork /bin/bash

image.png

unshare -p --fork --mount-proc /bin/bash
ls -l /proc

image.png

ps -ef 

# ps 是“process status”的缩写,它用于显示当前系统上运行的进程的状态信息。
# -e参数表示显示所有进程,
# -f参数表示全格式显示。

image.png

实战2:隔离文件系统

mkdir -p /data/mymount

image.png

unshare --mount --fork /bin/bash

image.png

dd if=/dev/zero of=/data.img bs=8k count=10240

image.png

mkfs -t ext4 ./data.img

image.png

df -h

image.png

mount -t ext4 ./data.img /data/mymount

image.png

hostname

df -h

image.png

(二)CGroups

1. 基本介绍

CGroups(Control Groups)是 linux 内核提供的一种机制,这种机制可以根据需求把一系列系统任务及其子任务整合(或分隔)到按资源划分等级的不同组内,从而为系统资源管理提供统一的框架。简单说,CGroups 可以限制、记录任务组所使用的物理资源。本质上来说,cgroups 是内核附加在程序上的一系列钩子(hook),通过程序运行时对资源的调度触发相应的钩子以达到资源追踪和限制的目的。

2. 相关 Linux 指令

**(1)pidstat – **查看各种资源信息

pidstat -u # 显示各个进程CPU使用情况(-u 为默认参数)

image.png

pidstat -r # 现实各进程的内存使用情况

image.png

pidstat -d # 显示各进程的 IO 使用情况

image.png

pidtest -p 1480 # 显示该进程号的资源使用情况

image.png

pidtstat -p 1480

pidstat -r -p 1480

pidstat -d -p 1480

image.png

image.png

**(2)stress – **压力工具

stress -c 1 # 产生N个进程,每个进程循环调用 sqrt函数 产生CPU压力

image.png

stress -i 1 # 产生N个进程,每个进程循环调用sync将内存缓冲区内容写到磁盘上,产生IO压力。
# 通过系统调用sync刷新内存缓冲区数据到磁盘中,以确保同步。
# 如果缓冲区内数据较少,写到磁盘中的数据也较少,不会产生IO压力。
# 在SSD磁盘环境中尤为明显,很可能iowait总是0,却因为大量调用系统调用sync,导致系统CPU使用率sys升高。

image.png

stress -m 1 --vm-bytes 50m
# -m : 产生N个进程,每个进程循环调用malloc/free函数分配和释放内存。
# --vm-bytes B : 指定分配内存的大小

image.png

stress -d 1 # N:产生N个不断执行write和unlink函数的进程(创建文件,写入内容,删除文件)

image.png

stress -d 1 -t 3
# -t : 在N秒后结束程序
stress -d 1 -t 3 -q
# -q : 程序在运行的过程中不输出信息

image.png

实战1:cgroups 信息查看

cat /proc/filesystems | cg

image.png

cat /proc/cgroups

image.png

mount | grep cgroup

ll /sys/fs/cgroup/cpu,cpuacct

image.png

查看一个进程上的 cgroup 限制

# $$ 代表当前进程的PID
cat /proc/$$/cgroup 

mount | grep cgroup

# 控制组下的cpu文件 /sys/fs/cgroup/cpu,cpuacct
# 具体进程的cpu控制文件位置 /user.slice
ll /sys/fs/cgroup/cpu,cpuacct/user.slice

image.png
image.png

实战2:使用 cgroups 对内存进行控制

mount | grep cgroups

cd /sys/fs/cgroup/memory

ll

image.png

mkdir test-memlimit

cd /test-memlimit

ls -l # 自动将配置信息初始化好

image.png

echo "20971520" > memory.limit_in_bytes

cat memory.limit_in_bytes

image.png

stress -m 1 --vm-bytes 50m

image.png

pidstat -C stress -P ALL -r 2 100000

image.png

echo "xxxx" > tasks

实战3:使用 cgroups 对 cpu 进行控制

cd /sys/fs/cgroup/cpu,cpuacct

mkdir test-cpulimit

ll

image.png

stress -c 1

image.png

pidstat -u -C stress -p ALL 1 100000

image.png

cat cpu.cfs_period_us

cat cpu.cfs_quota_us

echo "20000" > cpu.cfs_quota_us

cat cpu.cfs_quota_us

image.png

echo "xxxxx" > tasks

image.png
image.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1478361.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

sora技术报告阅读

sora是一个在可变持续时间、分辨率和宽高比的视频和图像上联合训练文本条件扩散模型。 需要将所有类型的视觉数据转化为统一表示的方法,使得能够对生成模型进行大规模训练。 Sora是一个通用的视觉数据模型,它可以生成不同持续时间、宽高比和分辨率的视…

ctfshow——反序列化

文章目录 web 254——啥也没web 255——反序列化对变量进行赋值(1)web 256——反序列化对变量进行赋值(2)web 257——对象注入web 258——对象注入(绕过preg_match)web 259 web 254——啥也没 这里就是使用GET传输,use…

小程序中使用echarts地图

一、下载并安装echarts 1、下载echarts-for-weixin组件 echarts-for-weixin项目提供了一个小程序组件,用这种方式可以在小程序中方便地使用 ECharts。 下载ec-canvas项目(下载地址) ​​ 注意:下载的 ec-canvas 中的echarts的版本…

k8s.gcr.io/pause:3.2镜像丢失解决

文章目录 前言错误信息临时解决推荐解决onetwo 前言 使用Kubernetes(k8s)时遇到了镜像拉取的问题,导致Pod沙盒创建失败。错误显示在尝试从k8s.gcr.io拉取pause:3.2镜像时遇到了超时问题,这通常是因为网络问题或者镜像仓库服务器的…

【Go-Zero】测试API查询信息无法返回数据库信息与api、rpc文件编写规范

【Go-Zero】测试API查询信息无法返回数据库信息与api、rpc文件编写规范 大家好 我是寸铁👊 总结了一篇测试API查询信息无法返回数据库信息与api、rpc文件编写规范的文章✨ 喜欢的小伙伴可以点点关注 💝 问题背景 大家好,我是寸铁&#xff01…

TypeScript 中类的理解及应用场景

👩 个人主页:不爱吃糖的程序媛 🙋‍♂️ 作者简介:前端领域新星创作者、CSDN内容合伙人,专注于前端各领域技术,成长的路上共同学习共同进步,一起加油呀! ✨系列专栏:前端…

应用多元统计分析--多元数据的直观表示(R语言)

例1.2 为了研究全国31个省、市、自治区2018年城镇居民生活消费的分布规律,根据调查资料做区域消费类型划分。 指标: 食品x1:人均食品支出(元/人) 衣着x2:人均衣着商品支出(元/人) 居住x3:人均居住支出(元/人) 生活x4…

map和set的简单介绍

由于博主的能力有限,所以为了方便大家对于map和set的学习,我放一个官方的map和set的链接供大家参考: https://cplusplus.com/ 在初阶阶段,我们已经接触过STL中的部分容器,比如:vector、list、deque&#x…

【AI+应用】怎么快速制作一个类chatGPT套壳网站

最近有人问我, 看了我之前写的一篇文章 [人工智能] AI浪潮下Sora对于普通人的机会 , 怎么做一个类chatGPT的套壳网站,是从0开始做么。 对于普通人来说,万事不懂先AI, AI找不到答案搜索google或百度。对于程序员来说…

GIT 拉取代码报错error:some local refs could not be updated

文章目录 报错信息处理办法在这里插入图片描述小结 报错信息 ![new branch] dev->orgin/dev(unable to update local ref) error:some local refs could not be updated;try running git remote prune orginto remove any old,confilicting branches 处理办法 git gc --pru…

【免费】两阶段鲁棒优化matlab实现——CCG和benders

目录 1 主要内容 2 部分代码 3 程序结果 4 下载链接 1 主要内容 程序采用matlab复现经典论文《Solving two-stage robust optimization problems using a column-and-constraint generation method》算例,实现了C&CG和benders算法两部分内容,通过…

android开发与实战,那些年Android面试官常问的知识点

前言 在做android项目开发时,大家都知道如果程序出错了,会弹出来一个强制退出的弹 出框,这个本身没什么问题,但是这个UI实在是太丑了,别说用户接受不了,就连 我们自己本身可能都接受不了。虽然我们在发布程…

水豚鼠标助手 强大的鼠标美化工具

水豚鼠标助手 水豚鼠标助手是一款 鼠标换肤、屏幕画笔、放大镜、聚光灯、屏幕放大、倒计时功能的强大屏幕演示工具。 软件助手获取 水豚鼠标助手1.0.0 安装教程 第一步:下载后,双击软件安装包 第二步:Windows可能会出现提示弹窗&#xff…

使用Docker部署Nacos集群和Nginx高可用负载(9节点集群部署)

文章目录 🔊博主介绍🥤本文内容部署Nacos集群Nginx高可用负载 📢文章总结📥博主目标 🔊博主介绍 🌟我是廖志伟,一名Java开发工程师、Java领域优质创作者、CSDN博客专家、51CTO专家博主、阿里云专…

打造透明银行存储:Solidity智能合约的实践与探索

引言: 随着区块链技术的快速发展,智能合约作为其中的核心组件,正被越来越多地应用于各种场景。作为智能合约的编程语言,Solidity因其对以太坊平台的深度支持而备受关注。在这篇文章中,我们将通过构建一个透明的银行存储…

Qt6内嵌CEF

一、下载CEF CEF下载地址:https://cef-builds.spotifycdn.com/index.html 或https://bitbucket.org/chromiumembedded/cef/src/master/ 选择对应系统的版本(本教程选择的是116.0.19) CMake下载地址:https://cmake.org/download…

模糊PID控制算法实战讲解-案例温度控制(附C语言实现)

可结合之前的文章一起理解: 控制算法-PID算法总结-从公式原理到参数整定解析(附C源码)_pid自整定算法-CSDN博客 模糊控制算法实战讲解-案例温度控制(附C语言实现)-CSDN博客 目录 一、模糊PID控制的原理 1.1 模糊化…

【程序员是如何看待“祖传代码”的?】《代码的遗产:探索程序员眼中的“祖传代码”》

程序员是如何看待“祖传代码”的? 在程序员的世界里,代码不仅仅是构建软件的基石,它们也承载着历史、智慧和技术的演变。在我的编程生涯中,我遇到过许多神奇而独特的“祖传代码”,这些代码如同古老的魔法书&#xff0…

网络协议栈和os的关系(网络协议栈和计算机体系结构图相结合),用户如何从网络获取数据+本质,简述网络通信的本质

目录 网络协议栈和os的关系 思考联系 实际 用户从网络获取数据的过程 本质 如何获取 -- 系统调用 图示 不同的os 网络通信的本质 两台主机通信流程 网络协议栈和os的关系 思考联系 网络协议栈涵盖了硬件和软件,而os正是管理软硬件资源的中枢 os是计算机体系结构的一…

python自动化学习--3.8python操作EXCEL文件python日志收集处理

1、Excel文件处理 安装 openpxl 第三方库 openpxl 模块三大组件: 1、工作簿 (包含多个sheet工作表) 2、工作表 (某个数据包含在某个工作表) 3、单元格 1、创建excel工作簿 import openpyxl"""Excel表格的创建…