Cloud Shell 空闲 CPU 使用率似乎相对较高 (3-6%) - 此使用率来自何处?

Cloud Shell 空闲 CPU 使用率似乎相对较高 (3-6%) - 此使用率来自何处?
top - 12:10:09 up  2:18,  6 users,  load average: 0.03, 0.03, 0.00
Tasks:  35 total,   1 running,  34 sleeping,   0 stopped,   0 zombie
%Cpu(s):  2.1 us,  1.4 sy,  0.0 ni, 96.5 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1735912 total,   437708 free,   378916 used,   919288 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  1188436 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                                            
  251 alan_ch+  20   0  636432  12428   6504 S  0.2  0.7   0:02.46 python         
    1 root      20   0   17980   2800   2496 S  0.0  0.2   0:00.01 bash           
    8 root      20   0  250120   2212   1776 S  0.0  0.1   0:00.84 rsyslogd
   38 root      20   0   69952   3040   2268 S  0.0  0.2   0:00.00 sshd                                                               

谷歌云包括云贝壳。这提供了一个交互式 Linux 沙箱,可用于轻度管理或测试任务。无需付款或付款信息即可使用。 条款和条件适用

top即使在增加间隔 ( ) 后,CPU 使用率摘要始终显示为 3-6% 左右top -d 10。但是,如果您查看各个进程显示的 CPU 使用情况,就会发现它并没有相加。

CPU在使用什么?

答案1

当前的 Cloud Shell 创建私有虚拟机,以实现最大的灵活性。但它显示的实际 shell 正在容器内运行。该容器具有很高的特权,但由于它使用单独的 PID 命名空间,因此您无法看到容器外部的进程。

$ amicontained
Container Runtime: kube
Has Namespaces:
        pid: true
        user: false
AppArmor Profile: unconfined
Capabilities:
        BOUNDING -> chown dac_override dac_read_search fowner fsetid kill setgid setuid setpcap linux_immutable net_bind_service net_broadcast net_admin net_raw ipc_lock ipc_owner sys_module sys_rawio sys_chroot sys_ptrace sys_pacct sys_admin sys_boot sys_nice sys_resource sys_time sys_tty_config mknod lease audit_write audit_control setfcap mac_override mac_admin syslog wake_alarm block_suspend audit_read
Chroot (not pivot_root): false
Seccomp: disabled

特权容器可以是逃脱了,使用一些精心设计的 shell 命令。这不是安全漏洞,只是不是预期用途。 (请勿滥用Cloud Shell资源。您可以相信谷歌了解有关监视虚拟机资源使用情况的一些信息)。

例如,我能够挂载 devtmpfs、创建一些管道、利用在/core_pattern上打开 shell 。在壳内,我重新进入容器/dev/fifo_in/dev/fifo_out仅命名空间。然后使用新的 procfs 挂载来过度挂载 /proc 就足够了。这样,我可以top在另一个 Cloud Shell 选项卡中打开,它会显示主持人PID 命名空间。

假设他们(尚未)优化空闲资源的使用。

top - 12:50:14 up  2:58,  3 users,  load average: 0.01, 0.05, 0.04
Tasks: 127 total,   1 running,  96 sleeping,   0 stopped,   1 zombie
%Cpu(s):  3.1 us,  1.5 sy,  0.0 ni, 95.4 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1735912 total,   444240 free,   351448 used,   940224 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  1215836 avail Mem

USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                                                  
root      20   0  413140  58704  26008 S  2.7  3.4   4:31.18 kubelet      
root      20   0  378940  46260  15912 S  0.6  2.7   1:03.18 dockerd                                                                  
root      20   0  184008   9760   5408 S  0.1  0.6   0:14.27 python         
alan_ch+  20   0  644372  12392   6584 S  0.1  0.7   0:00.07 python         
root      20   0   66364  33976  33472 S  0.1  2.0   0:10.34 systemd-journal   
root      20   0  292264  22488  13616 S  0.1  1.3   0:04.56 docker-containe   
root      20   0  369808  64224  36928 S  0.1  3.7   0:03.81 dockerd          
root      20   0  365684   6408   3668 S  0.1  0.4   0:06.00 docker-containe
alan_ch+  20   0   58060  20272   7560 S  0.0  1.2   0:01.27 python                                                                   
root      20   0       0      0      0 I  0.0  0.0   0:04.42 rcu_sched                                                                

相关内容