吸引住妹子的trace_event技术

2021年11月20日 阅读数:2
这篇文章主要向大家介绍吸引住妹子的trace_event技术,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

一天,有人报上了一个问题,发现一台服务器上空闲内存不足,slab占用了40多G,想知道什么缘由,而后拉我进入在线会议远程看看。node


我进入会议常规检测一番,因而想看看哪一个slab占用内存比较多,直接上小脚本:bash

while sleep 1; do cat /proc/slabinfo | awk '{name=$1; size=$2*$4/4096; \printf "%s %lu\n", name, size;}' | sort -n -r -k 2 | head -n 20;  \ echo "--------------";done;

结果显示相似以下:服务器

TCPv6 9347580  (单位:4K, 大约36G)微信

inode_cache 3519ui

ext3_inode_cache 3427spa

dentry 2285.net

kmem_cache 1389debug

sysfs_dir_cache 832code

buffer_head 682视频

radix_tree_node 675

vm_area_struct 505

size-2048 500

task_struct 496

size-1024 464

...


能够看到TCPv6占用了36G左右, 而后会议上有个负责业务应用的妹子问,能知道是哪一个进程占用的吗?


我装着不忙地喝了一口百岁山,因而派上trace_event出场:(如下操做过程当中全场安静,都盯着个人键盘输出)


首先经过/proc/slabinfo 查看到TCPv6 object size=1856,而后:

cd /sys/kernel/debug/tracing/echo 'bytes_alloc==1856' >events/kmem/kmem_cache_alloc/filterecho 1 > ./options/stacktracecat ./trace

从./trace中打印出的堆栈信息和进程号,确认是他们的业务进程xxx正在干什么事(已排除内存泄漏)


这时候妹子抢占了会上全部人的讲话,笑着说:"能把history打印出来吗?",连续提醒了我三次,说想学习一下。<真是一个好学的童鞋 :-)>


这个时候本想顺道宣传一下我在阅码场发布的tracers视频课程,视频课程里面各个traces都有很详细的讲解和案例.

可是工做时间要体现必定的专业和严肃性,并无宣传,若是她有机会能看到这篇公众号以后再去订阅会更好:-)


最后我又喝下一口百岁山, 敲下history | tail -20 以后独自退出了会议...


tracers视频课程订阅二维码:


---end---

本文分享自微信公众号 - 相遇Linux(LinuxJeff)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。