list_cache.sh
#!/bin/bash
cd /sys/fs/cgroup/memory/kubepods.slice/kubepods-burstable.slice
printf "%-110s %-5s %-10s %-10s\n" pod_name cache_size PID PROCESS_NAME
for ID in `grep total_cache */memory.stat |sort -rnk2|head -10|awk -F"_" '{print $5}'|awk -F"." '{print $1}'`;
do
docker_id=`docker ps |grep $ID|grep -v POD|awk '{print $1}'`;
docker_name=`docker ps -a --format "{{.Names}} {{.ID}}"|grep ${docker_id} |awk '{print $1}' ` ;
cache_size=`grep total_cache */memory.stat |sort -rnk2|head -10|grep ${ID}|awk '{print $2/1024/1024}'`;
PID=`docker ps |grep $ID|grep -v POD|awk '{print $1}'|xargs docker inspect -f '{{.State.Pid}}'`;
PROCESS_NAME=`pstree $PID|head -1|awk -F"{" '{print $2}'|awk -F"}" '{print $1}'`
printf "%-110s %-5sMB %-10s %-10s\n" ${docker_name} ${cache_size} $PID ${PROCESS_NAME}
done
执行结果
[root@ip-10-27-158-183 kubepods-burstable.slice]# sh /tmp/list_cache.sh
pod_name cache_size PID PROCESS_NAME
k8s_api-gateway_api-gateway-65c995c9d-dcrxk_platform_3966cb6d-af8c-4e5c-b194-9961d652fd9a_0 5146.81MB 20767 java
k8s_pa_pa-c4bd5c699-6ntrm_platform_3dcc011b-105e-4a53-b7ef-04f8b73e1ae8_0 2067.93MB 1356 java
k8s_batch_batch-5cbd4cd8b7-95vv8_platform_251bee16-0801-4d68-80b1-45f37a291c91_0 1092.03MB 16341 java
k8s_eureka_eureka-0_platform_88878b84-b6de-4788-8f3e-5f1da49e2361_0 515.324MB 11521 java
k8s_cust_cust-67f54956bf-jlxfh_platform_dd44ad68-d18f-482b-a94c-cfe0037b3de3_0 417.406MB 24579 java
k8s_filebeat-oss_filebeat-oss-7jg95_platform_c9473a7a-f371-4401-854c-f7da3e5f764a_1 400.52MB 11684 filebeat
k8s_platform-busi-config_platform-busi-config-9747d6f4d-lpdvv_platform_d809438c-5b43-4bb0-b02b-77b490bdbf0c_0 175.848MB 3750 java
k8s_seata-server_seata-server-77ffcfd9b5-cx88g_platform_506568ee-34b4-4f03-9a0b-2b36961157ce_0 170.422MB 13492 java
k8s_proposal_proposal-7c97f4fc66-rhnt6_platform_0d4ce376-02b5-4644-968b-76607fb52935_0 169.785MB 1910 java
k8s_config-server_config-server-9777bfcc6-qw6d6_platform_c569c138-ed72-4224-ab44-7c9b0ecdc794_0 116.184MB 8212 java
按照cache size排序发现全部是Java的。Java里面打开过的文件在cache里面,在有可用内存的情况下是不会主动flush cache的。