docker stats 명령 소스 분석 결과
2473 단어 docker
$ docker stats nginx-test
CONTAINER
CPU %
MEM USAGE/LIMIT
MEM %
NET I/O
BLOCK I/O
nginx-test
0.00%
4.268 MB/1.041 GB
0.41%
1.296 kB/648 B
7.463 MB/0 B
docker client 관련 코드 입구 참조 가능:/docker/docker/api/client/stats.go#141 docker daemon 관련 코드 입구 참조:/docker/docker/daemon/daemon.go#1474
원본 코드 분석 결과
Cpu 데이터:
docker daemon은 이번 읽기/sys/fs/cgroup/cpuacct/docker/[container Id]/cpuacct를 기록합니다.usage의 값, cputotal_usage;마지막으로 읽은 이 값이 pre 임을 기록했습니다.cpu_total_usage;
/proc/stat에서 cpufieldvalue를 읽고 누적하여 시스템usage;마지막 값이 pre 임을 기록합니다.system_usage;
읽기/sys/fs/cgroup/cpuacct/docker/[containerId]/cpuacct.usage_percpu의 기록, 그룹 구성percpu_usage_array;
docker stats는 Cpu Percent의 알고리즘을 계산합니다.
cpu_delta = cpu_total_usage - pre_cpu_total_usage; system_delta = system_usage - pre_system_usage; CPU % = ((cpu_delta/system_delta) * length(per_cpu_usage_array) ) * 100.0
메모리 데이터:
읽기/sys/fs/cgroup/memory/docker/[containerId]/memory.usage_in_bytes의 값으로memusage;
용기가 메모리를 제한하면/sys/fs/cgroup/memory/docker/[id]/memory를 읽습니다.limit_in_bytes는memlimit, 그렇지 않으면memlimit = machine_mem;
docker stats에서 Memory 데이터를 계산하는 알고리즘:
MEM USAGE = mem_usage MEM LIMIT = mem_limit MEM % = (mem_usage/mem_limit) * 100.0
Networt Stats 데이터:
이 용기 네트워크 namespace veth pairs에 속하는 호스트에 대응하는veth* 가상 네트워크 카드 EthInterface 그룹을 가져오고, 그룹의 모든 네트워크 카드 장치를 순환해서 읽습니다./sys/class/net//statistics/rxbytes 획득 rxbytes, 읽기/sys/class/net//statistics/txbytes 대응하는 tx 획득bytes.
모든 가상 NIC에 대응하는 rxbytes 이 용기를 누적하는 rxbytes.
이러한 모든 가상 NIC에 해당하는 txbytes 이 용기를 누적하는 txbytes.
docker stats에서 Network IO 데이터를 계산하는 알고리즘:
NET I = rx_bytes NET O = tx_bytes
Blkio Stats 데이터:
모든 블록 장치의 IoServiceBytesRecursive 데이터 가져오기:/sys/fs/cgroup/blkio/docker/[containerId]/blkio.io_serviced_recursive에 유효한 값이 있는지 여부,
각 블록 장치의 Io ServiceBytesRecursive 데이터에 있는 모든read field에 대한value를 누적하여 해당 컨테이너의blkread 값;각 블록 장치의 IoServiceBytesRecursive 데이터에 있는 모든 write field에 대한value를 누적하여 이 용기의blkwrite 값;
docker stats에서 Block IO 데이터를 계산하는 알고리즘:
BLOCK I = blk_read BLOCK O = blk_write
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Swarm의 도커 비밀이 게시물에서는 Redis를 사용한 실제 시나리오 예제를 제공하여 사용 방법을 보여주고자 합니다. Docker 기술에 대한 기본 지식 Docker Swarm 오케스트레이터에 대한 기본 지식 "Docker Swarm ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.