cgroups

5分钟快速了解Docker的底层原理

…衆ロ難τιáo~ 提交于 2021-02-01 12:57:52
原创:小姐姐味道(微信公众号ID:xjjdog),欢迎分享,转载请保留出处。 一位同学曾给我打比方:宿主机就好比一间大房子, docker 把它成了 N 个小隔断。在这些小隔断之间,有独立的卫生间、小床、电视... 麻雀虽小,五脏俱全,这个比喻非常的贴切。Linux提供了非常全面的隔离机制,使得每个小隔间互不影响。即使隔壁小间满室春光,我的小房间一样的冷清,对我毫无影响。 Docker能实现这些功能,依赖于 chroot 、 namespace 、 cgroup 等三种 老技术 。我们本篇文章,就先聊一下 namespace 方面的东西。毕竟隔离是容器的第一要素。 Linux的内核,提供了多达8种类型的Namespace。在这些独立的Namespace中,资源互不影响,隔离措施做的非常好。 1. 8种类型 我们先来看一下,Linux都支持哪些Namespace。可以通过 unshare 命令来观察到这些细节。在终端执行 man unshare ,将会出现这些Namespace的介绍。 Mount( mnt ) 隔离挂载点 Process ID ( pid ) 隔离进程 ID Network ( net ) 隔离网络设备,端口号等 Interprocess Communication ( ipc ) 隔离 System V IPC 和 POSIX message queues UTS

5分钟了解Docker原理(2),最简单的cgroups介绍!

喜夏-厌秋 提交于 2021-02-01 11:52:41
原创:小姐姐味道(微信公众号ID:xjjdog),欢迎分享,转载请保留出处。 很多接触Docker的同学,都接触过cgroup这个名词。它是Linux上的一项古老的技术,用来实现资源限制,比如CPU、内存等。但有很多同学反映,这项技术有点晦涩,不太好懂。 这就是本篇文章存在的目的,会让你以最简单直观的方式,了解cgroups到底是个什么东西。 接上上篇文章: 《5分钟快速了解Docker的底层原理 | namespace篇》 cgroups,是实现docker功能的重要底层设施。如上图,使用cgroups,能够把操作系统的各项资源变成池子,然后通过配置获取相应的资源。 那它是怎么实现的呢? 要注意 cgroups 这个名词,它有两个特性。首先是 c ,就是 Control 的意思,是个动词;第二部分,就是 groups ,证明它是个 组 。 1. 动词的目标 control,用来限制什么呢?除了CPU、内存,还有啥? 使用mount命令,查看当前系统支持的限制目标,它有个专用的名词,叫做 子系统 。 # mount | grep cgroup tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755) cgroup on /sys/fs/cgroup/systemd type cgroup (rw

cgroups blkio subsystem is not counting the block write byte count properly for conatiner applications

坚强是说给别人听的谎言 提交于 2021-01-29 14:33:04
问题 I am working on the linux kernel base 3.14 version and i have enabled the cgroup and blkio subsystem on it for checking the write byte count of the block device from the container and host applications. But, I have problems in getting the written bytes from the cgroup blkio throttling function for the container application. It works for the main hierarchy (e.g. /sys/fs/cgroup/blkio/blkio.throttle.io_service_bytes) , but not for the deeper ones (e.g. /sys/fs/cgroup/blkio/lxc/web (container

Linux性能优化(十二)——CPU性能调优

浪尽此生 提交于 2021-01-18 10:25:41
一、应用程序优化 (1)编译器优化。适当开启编译器优化选项,在编译阶段提升性能。gcc提供优化选项-On会自动对应用程序的代码进行优化。 (2)算法优化。使用复杂度更低的算法,可以显著加快处理速度。在数据比较大的情况下,可以用O(nlogn)的排序算法(如快排、归并排序等),代替O(n^2)的排序算法(如冒泡、插入排序等)。 (3)异步处理。使用异步处理,可以避免程序因为等待某个资源而一直阻塞,从而提升程序的并发处理能力。把轮询替换为事件通知,就可以避免轮询耗费CPU的问题。 (4)多线程代替多进程。相对于进程的上下文切换,线程的上下文切换并不切换进程地址空间,因此可以降低上下文切换的成本。 (5)善用缓存。经常访问的数据或者计算过程中的步骤,可以放到内存中缓存起来,在下次用时就能直接从内存中获取,加快程序的处理速度。 二、系统优化 1、CPU绑定 (1)CPU绑定:把进程绑定到一个或者多个CPU上,可以提高CPU缓存的命中率,减少跨CPU调度带来的上下文切换问题。 (2)CPU孤立:将CPU分组,并通过CPU Affinity机制为其分配进程。指定CPU由特定进程独占,不允许其它进程再使用。 2、进程CPU资源限制 使用Linux cgroups来设置进程CPU使用上限,可以防止由于某个应用自身的问题,而耗尽系统资源。 3、进程优先级调整 使用nice调整进程优先级

Docker

不问归期 提交于 2021-01-16 05:57:22
docker是一个云计算平台,他利用了linux的lxc、AUFU、Go语言、cgroup实现了资源的独立,可以很轻松的实现文件、资源、网络等隔离,他最终的目标是想实现类似PAAS平台的应用隔离,据说将要开源,希望大家关注 Notable features Filesystem isolation: each process container runs in a completely separate root filesystem. Resource isolation: system resources like cpu and memory can be allocated differently to each process container, using cgroups. Network isolation: each process container runs in its own network namespace, with a virtual interface and IP address of its own. Copy-on-write: root filesystems are created using copy-on-write, which makes deployment extremeley fast, memory-cheap and

Restrict cpu usage to 25 % per customer base using cgroups

懵懂的女人 提交于 2021-01-05 12:55:42
问题 I want to restrict cpu usage of users to only 25% . For this i am using cgroups. Here is the guide that I am following : http://kaivanov.blogspot.in/2012/07/setting-up-linux-cgroups-control-groups.html This guide work with one core cpu machine, but when i am using with the 4 core cpu machine this configuraion doe not work. Here is my configuration: # Configuration file generated by cgsnapshot mount { cpu = /cgroup/cpu; } group test1 { cpu { cpu.rt_period_us="1000000"; cpu.rt_runtime_us="0";

Restrict cpu usage to 25 % per customer base using cgroups

女生的网名这么多〃 提交于 2021-01-05 12:52:16
问题 I want to restrict cpu usage of users to only 25% . For this i am using cgroups. Here is the guide that I am following : http://kaivanov.blogspot.in/2012/07/setting-up-linux-cgroups-control-groups.html This guide work with one core cpu machine, but when i am using with the 4 core cpu machine this configuraion doe not work. Here is my configuration: # Configuration file generated by cgsnapshot mount { cpu = /cgroup/cpu; } group test1 { cpu { cpu.rt_period_us="1000000"; cpu.rt_runtime_us="0";

Does Kubernetes POD have namespace and cgroup associated with it?

时光怂恿深爱的人放手 提交于 2020-12-15 03:51:38
问题 Docker Containers have cgroups and namespaces associated with them, whether they are running in a pod or vm or host machine. Similarly, does a Kubernetes Pod's have namespaces and cgroups associated with them, or it's just the containers within the pod have these(cgroup & namespace) associations. If they do, how can I find this info from the host? 回答1: group of whales is called a pod. Consider a pod of two humpback whales. One whale is grey in color and other is blue. What is the color of the

Docker入门实操

徘徊边缘 提交于 2020-11-26 04:52:06
浅色边框标题 docker简介 Linux 容器作为一类操作系统层面的虚拟化技术成果,旨在立足于单一 Linux 主机交付多套隔离性 Linux 环境。 与虚拟机不同,容器系统并不需要运行特定的 guest os 。相反,容器共享同一套主机操作系统内核,同时利用guest os的系统库以交付必要的系统功能。由于无需借助于专门的操作系统,因此容器在启动速度上要远远优于虚拟机。 上图是经典对比图,左图是传统的虚拟化,属于平台虚拟化(模拟,全虚拟化,半虚拟化)每个虚拟机运行在自己独立完整的操作系统中;右图是容器,与虚拟机不同,容器系统并不需要运行特定的访客操作系统。 容器能够利用 Namespaces 、 SELinux 、 chroot 以及 CGroups 等 Linux 内核功能,从而交付一套类似于虚拟机的隔离性环境。 Linux 安全模块能够确保来自容器的主机设备与内核访问行为受到妥善管理,从而避免入侵活动的发生。除此之外,容器还能够通过其主机操作系统运行多种不同 Linux 发行版——只要各类操作系统拥有同样的底层 CPU 架构要求( 然而在生产环境中并不能做到真正意义上的完全隔离 ); Docker 是开源基于 LXC(linux container) 的高级容器引擎,基于 go 语言开源,使用内核的 cgroups (文件系统隔离)及 namespace (一种命名方法)