保健励志美文体育育儿作文
投稿投诉
作文动态
热点娱乐
育儿情感
教程科技
体育养生
教案探索
美文旅游
财经日志
励志范文
论文时尚
保健游戏
护肤业界

容器内的Linux诊断工具0x。tools

  原创:扣钉日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处。简介
  Linux上有大量的问题诊断工具,如perf、bcc等,但这些诊断工具,虽然功能强大,但却需要很高的权限才可以使用。
  而0x。tools这个工具提供了一个很好的思路,通过采样proc目录来诊断问题,对被测量程序几乎无性能影响,且只要与目标进程拥有同等级的权限,即可正常使用。
  不要小看这个权限区别,在互联网大厂,开发同学一般只能获取到一个受限于容器内的shell环境,想要获取机器的root权限几乎是不可能的。安装下载源码gitclonehttps:github。comtanelpoder0xtools。git安装编译器yuminstallymakegcc编译并安装程序makemakeinstall
  实际上0x。tools里的工具大多数是脚本,如psn工具是python脚本,因此直接将代码clone下来,然后执行binpsn也是可以的。psn工具
  psn工具用来观测系统中当前活跃的线程正在做什么,如线程在做什么系统调用、写什么文件、阻塞在哪个内核函数下?查看活跃线程〔tanellinux01〕psnLinuxProcessSnapperv0。18byTanelPoder〔https:0x。tools〕Samplingprocstatfor5seconds。。。finished。ActiveThreadssamplesavgthreadscommstate106283542。67(kworker:)Disk(Uninterruptible)3712。33(oraclel)Running(ONCPU)175。67(oraclel)Disk(Uninterruptible)20。67(xcapture)Running(ONCPU)10。33(oralgxe)Disk(Uninterruptible)10。33(oralgwrlin)Disk(Uninterruptible)10。33(oralgwrlinc)Disk(Uninterruptible)samples:3(expected:100)totalprocesses:10470,threads:11530runtime:6。13,measuretime:6。03
  如上,默认情况下,psn采样proc目录下每个线程的procpidstat文件,采样5秒钟,将R(正在运行)或D(不可中断休眠)状态的线程的数据记录下来,并做汇总。
  由于R或D状态的线程都是活跃线程,被采样到的次数越多,则越说明这些线程运行得更慢或更频繁。查看线程读写文件〔tanellinux01〕sudopsnGsyscall,filenamesumLinuxProcessSnapperv0。18byTanelPoder〔https:0x。tools〕Samplingprocsyscall,statfor5seconds。。。finished。ActiveThreadssamplesavgthreadscommstatesyscallfilenamesum2027506。75(kworker:)Disk(Uninterruptible)〔kernelthread〕1963490。75(oraclel)Disk(Uninterruptible)pread64dataoracleLINCsoebigfile。dbf8721。75(oraclel)Running(ONCPU)〔running〕133。25(kworker:)Running(ONCPU)〔running〕41。00(oraclel)Running(ONCPU)readsocket:〔〕20。50(collectl)Running(ONCPU)〔running〕10。25(java)Running(ONCPU)futex10。25(orackptxe)Disk(Uninterruptible)pread64dataoracleXEcontrol。ctl10。25(oramlinprd)Running(ONCPU)〔running〕10。25(oramlintes)Running(ONCPU)〔running〕
  通过G可以指定需要查看的列,syscall表示线程正在执行的系统调用,filenamesum表示正在读写的文件,一般来说,线程处于D状态时在做文件io操作,如果D状态线程频繁出现,那么我们肯定想知道线程正在读写哪个文件。查看线程的内核栈〔tanellinux01〕sudopsnpGsyscall,wchan,kstackLinuxProcessSnapperv0。18byTanelPoder〔https:0x。tools〕Samplingprocwchan,stack,syscall,statfor5seconds。。。finished。ActiveThreadssamplesavgthreadscommstatesyscallwchankstack281140。50(kworker:)Disk(Uninterruptible)〔kernelthread〕blkdevissueflushretfromforknospecbegin()kthread()workerthread()processonework()dioaiocompletework()diocomplete()genericwritesync()xfsfilefsync()xfsblkdevissueflush()blkdevissueflush()211105。50(kworker:)Disk(Uninterruptible)〔kernelthread〕callrwsemdownreadfailedretfromforknospecbegin()kthread()workerthread()processonework()dioaiocompletework()diocomplete()genericwritesync()xfsfilefsync()xfsilock()callrwsemdownreadfailed()16984。50(oracleli)Disk(Uninterruptible)pread64callrwsemdownwritefailedsystemcallfastpath()SySpread64()vfsread()dosyncread()xfsfileaioread()xfsfiledioaioread()touchatime()updatetime()xfsvnupdatetime()xfsilock()callrwsemdownwritefailed()6432。00(kworker:)Disk(Uninterruptible)〔kernelthread〕xfslogforcelsnretfromforknospecbegin()kthread()workerthread()processonework()dioaiocompletework()diocomplete()genericwritesync()xfsfilefsync()xfslogforcelsn()2412。00(oracleli)Disk(Uninterruptible)pread64callrwsemdownreadfailedsystemcallfastpath()SySpread64()vfsread()dosyncread()xfsfileaioread()xfsfiledioaioread()blockdevdirectIO()doblockdevdirectIO()xfsgetblocksdirect()xfsgetblocks()xfsilockdatamapshared()xfsilock()callrwsemdownreadfailed()52。50(oracleli)Disk(Uninterruptible)pread64doblockdevdirectIOsystemcallfastpath()SySpread64()vfsread()dosyncread()xfsfileaioread()xfsfiledioaioread()blockdevdirectIO()doblockdevdirectIO()31。50(oracleli)Running(ONCPU)〔running〕0systemcallfastpath()SySpread64()vfsread()dosyncread()xfsfileaioread()xfsfiledioaioread()blockdevdirectIO()doblockdevdirectIO()21。00(kworker:)Disk(Uninterruptible)〔kernelthread〕callrwsemdownwritefailedretfromforknospecbegin()kthread()workerthread()processonework()dioaiocompletework()diocomplete()xfsendiodirectwrite()xfsiomapwriteunwritten()xfsilock()callrwsemdownwritefailed()21。00(kworker:)Running(ONCPU)〔running〕0retfromforknospecbegin()kthread()workerthread()processonework()dioaiocompletework()diocomplete()genericwritesync()xfsfilefsync()xfsblkdevissueflush()blkdevissueflush()21。00(oracleli)Disk(Uninterruptible)iosubmitcallrwsemdownwritefailedsystemcallfastpath()SySiosubmit()doiosubmit()xfsfileaioread()xfsfiledioaioread()touchatime()updatetime()xfsvnupdatetime()xfsilock()callrwsemdownwritefailed()10。50(java)Running(ONCPU)futexfutexwaitqueuemesystemcallfastpath()SySfutex()dofutex()futexwait()futexwaitqueueme()10。50(ksoftirqd)Running(ONCPU)〔running〕0retfromforknospecbegin()kthread()smpbootthreadfn()10。50(kworker:)Disk(Uninterruptible)〔kernelthread〕workerthreadretfromforknospecbegin()kthread()workerthread()10。50(kworker:)Disk(Uninterruptible)〔kernelthread〕workerthreadretfromforknospecbegin()kthread()workerthread()processonework()dioaiocompletework()diocomplete()genericwritesync()xfsfilefsync()xfsblkdevissueflush()blkdevissueflush()10。50(oralgxe)Disk(Uninterruptible)iosubmitinodediowaitsystemcallfastpath()SySiosubmit()doiosubmit()xfsfileaiowrite()xfsfiledioaiowrite()inodediowait()10。50(oracleli)Disk(Uninterruptible)〔running〕0
  同理,通过wchan字段可以查看线程阻塞在什么内核方法上,而kstack字段则可以查看线程阻塞时的内核调用栈是什么。psn的原理
  其实psn和ps命令一样,是通过遍历proc目录来获取线程信息的,如下:
  state:取自procpidstat文件。
  syscall:取自procpidsyscall文件。
  wchan:取自procpidwchan文件。
  kstack:取自procpidstack文件。
  与perf、bcc等工具的区别是,读取这些文件只需要与进程同等级的权限即可,不需要使用root账号。其它工具
  除了psn外,0x。tools里面还有一些其它工具,如xcapture、schedlat等,这里就不一一介绍了,感兴趣可以访问https:0x。tools查看。
  另外,由于psn是通过遍历proc目录实现的,因此我们也可自己编写脚本来实现同样的功能,如下:activethreadkstack(){打印当前系统活跃java线程的内核栈pshLopid,tid,s,pcpu,comm,wchan:32,minflt,majfltCjavagrep〔RD〕awkBEGIN{syscallfiles〔usrincludeasmunistd64。h〕1;syscallfiles〔usrincludex8664linuxgnuasmunistd64。h〕1;syscallfiles〔usrincludeasmx8664unistd。h〕1;for(tfileinsyscallfiles){cmdtestftfileif(system(cmd)0){hfiletfile;break;}}if(hfile){while(getlinehfile){if(0NR){syscallmap〔3〕gensub(NR,,g,2)}}}else{syscallstr0:read1:write2:open3:close4:stat5:fstat6:lstat7:poll8:lseek9:mmap10:mprotect11:munmap12:brk13:rtsigaction14:rtsigprocmask15:rtsigreturn16:ioctl17:pread6418:pwrite6419:readv20:writev21:access22:pipe23:select24:schedyield25:mremap26:msync27:mincore28:madvise29:shmget30:shmat31:shmctl32:dup33:dup234:pause35:nanosleep36:getitimer37:alarm38:setitimer39:getpid40:sendfile41:socket42:connect43:accept44:sendto45:recvfrom46:sendmsg47:recvmsg48:shutdown49:bind50:listen51:getsockname52:getpeername53:socketpair54:setsockopt55:getsockopt56:clone57:fork58:vfork59:execve60:exit61:wait462:kill63:uname64:semget65:semop66:semctl67:shmdt68:msgget69:msgsnd70:msgrcv71:msgctl72:fcntl73:flock74:fsync75:fdatasync76:truncate77:ftruncate78:getdents79:getcwd80:chdir81:fchdir82:rename83:mkdir84:rmdir85:creat86:link87:unlink88:symlink89:readlink90:chmod91:fchmod92:chown93:fchown94:lchown95:umask96:gettimeofday97:getrlimit98:getrusage99:sysinfo100:times101:ptrace102:getuid103:syslog104:getgid105:setuid106:setgid107:geteuid108:getegid109:setpgid110:getppid111:getpgrp112:setsid113:setreuid114:setregid115:getgroups116:setgroups117:setresuid118:getresuid119:setresgid120:getresgid121:getpgid122:setfsuid123:setfsgid124:getsid125:capget126:capset127:rtsigpending128:rtsigtimedwait129:rtsigqueueinfo130:rtsigsuspend131:sigaltstack132:utime133:mknod134:uselib135:personality136:ustat137:statfs138:fstatfs139:sysfs140:getpriority141:setpriority142:schedsetparam143:schedgetparam144:schedsetscheduler145:schedgetscheduler146:schedgetprioritymax147:schedgetprioritymin148:schedrrgetinterval149:mlock150:munlock151:mlockall152:munlockall153:vhangup154:modifyldt155:pivotroot156:sysctl157:prctl158:archprctl159:adjtimex160:setrlimit161:chroot162:sync163:acct164:settimeofday165:mount166:umount2167:swapon168:swapoff169:reboot170:sethostname171:setdomainname172:iopl173:ioperm174:createmodule175:initmodule176:deletemodule177:getkernelsyms178:querymodule179:quotactl180:nfsservctl181:getpmsg182:putpmsg183:afssyscall184:tuxcall185:security186:gettid187:readahead188:setxattr189:lsetxattr190:fsetxattr191:getxattr192:lgetxattr193:fgetxattr194:listxattr195:llistxattr196:flistxattr197:removexattr198:lremovexattr199:fremovexattr200:tkill201:time202:futex203:schedsetaffinity204:schedgetaffinity205:setthreadarea206:iosetup207:iodestroy208:iogetevents209:iosubmit210:iocancel211:getthreadarea212:lookupdcookie213:epollcreate214:epollctlold215:epollwaitold216:remapfilepages217:getdents64218:settidaddress219:restartsyscall220:semtimedop221:fadvise64222:timercreate223:timersettime224:timergettime225:timergetoverrun226:timerdelete227:clocksettime228:clockgettime229:clockgetres230:clocknanosleep231:exitgroup232:epollwait233:epollctl234:tgkill235:utimes236:vserver237:mbind238:setmempolicy239:getmempolicy240:mqopen241:mqunlink242:mqtimedsend243:mqtimedreceive244:mqnotify245:mqgetsetattr246:kexecload247:waitid248:addkey249:requestkey250:keyctl251:ioprioset252:ioprioget253:inotifyinit254:inotifyaddwatch255:inotifyrmwatch256:migratepages257:openat258:mkdirat259:mknodat260:fchownat261:futimesat262:newfstatat263:unlinkat264:renameat265:linkat266:symlinkat267:readlinkat268:fchmodat269:faccessat270:pselect6271:ppoll272:unshare273:setrobustlist274:getrobustlist275:splice276:tee277:syncfilerange278:vmsplice279:movepages280:utimensat281:epollpwait282:signalfd283:timerfdcreate284:eventfd285:fallocate286:timerfdsettime287:timerfdgettime288:accept4289:signalfd4290:eventfd2291:epollcreate1292:dup3293:pipe2294:inotifyinit1295:preadv296:pwritev297:rttgsigqueueinfo298:perfeventopen299:recvmmsg300:fanotifyinit301:fanotifymark302:prlimit64303:nametohandleat304:openbyhandleat305:clockadjtime306:syncfs307:sendmmsg308:setns309:getcpu310:processvmreadv311:processvmwritev312:kcmp313:finitmodule314:schedsetattr315:schedgetattr316:renameat2317:seccomp318:getrandom319:memfdcreate320:kexecfileload321:bpf322:execveat323:userfaultfd324:membarrier325:mlock2326:copyfilerange327:preadv2328:pwritev2329:pkeymprotect330:pkeyalloc331:pkeyfree332:statx333:iopgetevents334:rseq424:pidfdsendsignal425:iouringsetup426:iouringenter427:iouringregister428:opentree429:movemount430:fsopen431:fsconfig432:fsmount433:fspick434:pidfdopen435:clone3split(syscallstr,syscallarr,)for(iinsyscallarr){split(syscallarr〔i〕,idnamearr,:)syscallmap〔idnamearr〔1〕〕idnamearr〔2〕}}syscallwithfdmap〔read〕1;syscallwithfdmap〔write〕1;syscallwithfdmap〔pread64〕1;syscallwithfdmap〔pwrite64〕1;syscallwithfdmap〔fsync〕1;syscallwithfdmap〔fdatasync〕1;syscallwithfdmap〔recvfrom〕1;syscallwithfdmap〔sendto〕1;syscallwithfdmap〔recvmsg〕1;syscallwithfdmap〔sendmsg〕1;syscallwithfdmap〔epollwait〕1;syscallwithfdmap〔ioctl〕1;syscallwithfdmap〔accept〕1;syscallwithfdmap〔accept4〕1;specialfdmap〔0〕(stdin);specialfdmap〔1〕(stdout);specialfdmap〔2〕(stderr);}{RS34;;getlinewchan(proc1task2wchan);close(proc1task2wchan);getlinestack(proc1task2stack);close(proc1task2stack);getlinesyscall(proc1task2syscall);close(proc1task2syscall);split(syscall,syscallarr,s);syscallidsyscallarr〔1〕syscallnamesyscallmap〔syscallid〕;if(syscallnameinsyscallwithfdmap){fdstrtonum(syscallarr〔2〕)cmdreadlinkproc1fdfd;cmdgetlinefilename;close(cmd);if(fdinspecialfdmap){filenamefilenamespecialfdmap〔syscallid〕}}printfpid:s,tid:s,stat:s,pcpu:s,comm:s,wchan:s,minflt:s,majflt:s,syscall:s,filename:s,1,2,3,4,5,wchan,7,8,syscallname,filename;printstack;RS}}
  这样,我们不用安装0x。tools,就也能得到类似于psn命令的功能了!

贵州12岁男孩玩游戏充6万4399未退款欢太科技退65中国经济网北京5月5日讯用父母的账号登录,反复充值数十次,退款审核取证难熊孩子大量氪金、家长退款维权不易的消费乱象近年层出不穷。据中国消费者报报道,4月21日,贵州铜仁吴……勇敢名言关于勇敢的名言1、惯于实际生活的人能坚持到底,坚持到最后结局,自我反省和空谈理论的人却不想越过他们自己所指定的边界,而永远停在那里,他们在崇高的意向,绝对的真诚和才干的条件下,阻碍事件前进,……留在我心中的风景旅途中有许多道美丽的风景,有雄壮无比的高山,有浩瀚无边的大海,有热闹繁华的街道。而留在我心中的风景却是hellip;hellip;清晨,当天还没完全亮时。她已披着围裙在厨……精选腊八节作文400字四篇在我们平凡的日常里,大家总少不了接触作文吧,作文是一种言语活动,具有高度的综合性和创造性。那么,怎么去写作文呢?下面是小编收集整理的腊八节作文400字4篇,仅供参考,大家一起来……一加手机第一天用烫手网友这应该是游戏的问题4月28号,小余帮朋友小黄购买了一部一加Ace手机,说是使用第一天,手机就烫得厉害。小黄下载第三方评测软件后,连续玩了一小时游戏,测出电池43。7度,CPU46。5度。小……关于国庆节的作文国庆哇!国庆节到了,终于放假了。不看不知到一看吓一跳,外面的变化可真大,胜利广场及各路口上摆满了花架、花架上是一盆盆五颜六色的鲜花,放眼望去,到处是一片花的海洋。从喷泉下走过好象刚……初中写人的作文500字我的偶像是鹿晗我的偶像是鹿晗,他之所以是我的偶像,并不是因为他帅气的外表,而是因为他身上那种不放弃,坚持不懈的精神。鹿晗,20xx年去韩国留学,在韩国的公司当练习生,一当就是三年。在这……关于圣诞老人的作文(优秀)圣诞老人可以说是圣诞节不可或缺的一个存在,下面是关于圣诞老人的作文,一起来看一下吧。【关于圣诞老人的作文篇一】你有试过收到圣诞老人的礼物吗?我有哦!而且是放在一个红色的大……我的爸爸寒风呼啸着,放肆地寻找目标。雨也不甘落后,lsquo;哗哗rsquo;地下着。窗户被拍得lsquo;啪啪rsquo;直响。那是一个风雨交加的夜晚,我和爸爸共撑一把雨伞走在……好好先生的成语故事好好先生:与人无争,只求相安无事的人。小编收集了好好先生的成语故事,希望各位读者喜欢。【成语】:好好先生【拼音】:hohoxinshng【解释】:与人无争,只……冬季校园运动会加油稿200字下面是小编为大家整理的运动会加油稿!欢迎阅读,希望文章对大家有帮助!篇一:超越对手,超越自我,是我们的目标,是我们的信念,在清凉的初冬,在喧嚣的田径场上,。你们点燃了似火……开心的星期天日记八篇导语:周日的休闲时间真是让你难以忘记,大家都说说有哪些难忘的经历。以下是小编为大家分享的开心的星期天日记八篇,欢迎借鉴!一:开心的星期天9月11日星期日星期天……
关于机会的作文机会董丹兮,10月12日你要参加杭州市经典诵读决赛,加油噢!班主任章老师把这一通知告诉我,我一阵喜悦,经过层层选拔,我终于能代表西湖区参加杭州市的决赛了,幸福和压力同时涌上心头。……第一章穿越!你是谁?我从小就懂得天是如何的美丽。也曾想象过,哪一天我能在云中玩耍,能在云中看太阳缓缓升起,啊,是多么的梦幻和美好。梦醒了,破灭了,为什么要这样对我。。。。。。我再也看不到那湛……可视门铃二三事随着科技的进步,现在的智能可视门铃也集成了更多功能,变成了一个更加智能化的家居产品。那么,它究竟有哪些作用?一款优秀的智能可视门铃应该具备哪些表现?下面就带大家一探究竟。……小熊助人为乐作文小熊助人为乐作文1森林里,一只小鸭子正在找虫子吃,一不小心掉进了坑里,他大声喊道:救命啊!救命啊!正在这时,小熊听到了,忙跑回家找了一只大大的水桶,拎起空水桶就往外跑。小……DjangoModel如何返回空的QuerySetfromdjango。contrib。auth。modelsimportUserUser。objects。none()QuerySet〔〕以上就是本文的全部内容,如果觉得……格言品学网专稿未经允许不得转载1激情,这是鼓满船帆的风。风有时会把船帆吹断;但没有风,帆船就不能航行。2天空的蔚蓝是你对未来的追求,大海的茫茫是你对未来的向往;只要坚持……奢侈品拥向线上CELINE在京东开设官方旗舰店北京商报讯(记者王维祎)5月6日,LVMH集团旗下品牌CELINE正式合作京东奢品,并在京东开设官方旗舰店。CELINE思琳京东官方旗舰店不仅可以送货上门、还提供就近门店线下取……我是猫大家好,我是一只猫,我叫桃花,因为我出生的时候,正是桃花姐姐露出笑脸的时候。我出生后每天都在院子里,躺在妈妈的怀里,听着麻雀弟弟叽叽喳喳的叫声,我想着春天一定很美,所以,我拼命……槟榔一物一码微信扫码领红包系统开发现今市场上各类的品牌零食、日用品、酒类等快销品,不难发现很多商家在产品上做上了二维码,让更多消费者可以参与到扫码抽大奖的活动里,从而更有利于产品促销。下面哈尔滨越界科技为大家介……小学我的小花猫作文我喜欢外婆家的小花猫,它很可爱,也很漂亮。平时老爱睡大觉,但我还是喜欢小花猫。瞧!它的头圆圆的,小花特别。一到晚上眼睛就发出绿色的光芒,可以捉老鼠。但小花猫怕阳光,只好白昼睡大……凤临天下,翻手覆云(二)穿越紫晶大陆丞相府破烂不堪的昏暗小屋里,一个穿着破旧衣服并且伤痕累累的女孩躺在一张小床上。忽然,昏死过去的女孩张开了双眼,紫色的眼眸,神秘,而有危险。没错,她就是……如何看待荣耀CEO赵明称未来五年荣耀将不存在瓶颈期,你看好荣荣耀要想发展的好必须要有自己的核心技术,目前看来我们没看到荣耀有研发任何的核心技术,基本都是拿来主义,连外壳的设计都懒的投入,不是抄袭苹果就是把华为的外壳直接拿来用,这跟拼多多……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网