草庐IT

perf-stat

全部标签

c - 从 perf 获取用户空间堆栈信息

我目前正在尝试追踪我正在测试的PostgreSQL构建中的一些幻象I/O。它是一个多进程服务器,将磁盘I/O关联回特定的后端和查询并不简单。我认为Linux的perf工具将是这方面的理想选择,但我正在努力捕获blockI/O性能计数器指标并将它们与用户空间事件相关联。记录blockI/O请求和完成很容易,例如:sudoperfrecord-g-T-upostgres-e'block:block_rq_*'并且记录了用户空间pid,但是没有捕获内核或用户空间堆栈,也没有对用户空间进程的堆(比如查询文本)等位进行快照的能力。所以当你有pid时,您不知道该过程当时在做什么。只是perfscr

linux - stat 命令输出中的设备号

stattest.logFile:`test.log'Size:573Blocks:8IOBlock:4096regularfileDevice:804h/2052dInode:7091301Links:1Access:(0644/-rw-r--r--)Uid:(1001/abc)Gid:(1001/abc)Access:2010-11-2917:56:22.000000000-0800Modify:2010-11-2917:56:22.000000000-0800Change:2010-11-2917:56:22.000000000-0800在上面的stato/p中,Device条目

c - 为什么设备的 stat::st_size 为 0 但同时 lseek 正确定义了设备大小?

我注意到,当我使用open+lseek查询设备大小时,一切正常,但是当我stat设备时,我得到零而不是实际设备大小。该设备是干净的,没有任何文件系统,并且设备的第一个字节以一些文本开头,例如“1234567890ABC”。怎么了?代码:#include#includeboolGetFileSize(constchar*pPath,uint64_t&Size){pPath="/home/sw/.bashrc";pPath="/dev/sda";structstatbuffer;if(stat(pPath,&buffer)){printf("Failedtostatfile.Error:%

linux - 使用/proc/stat 准确计算 Linux 中的 CPU 利用率

在/proc/stat中有许多关于如何使用统计信息获取CPU利用率的帖子和引用资料。然而,它们中的大多数只使用7+CPU统计信息中的四个(用户、nice、系统和空闲),忽略了Linux2.6中剩余的jiffieCPU计数(iowait、irq、softirq)。例如,参见DeterminingCPUutilization.我的问题是:iowait/irq/softirq数是否也算在前四个数字之一(user/nice/system/idle)中?换句话说,jiffie总数是否等于前四个统计数据的总和?或者,jiffie总数是否等于所有7个统计数据的总和?如果后者为真,则CPU利用率公式应

c - 使用 perf 分析 sleep 时间

我一直在寻找一种方法来找出我的程序花费时间的地方。我读了perftutorial并尝试按照那里的描述描述sleep时间。我写了最简单的程序来分析:#includeintmain(){sleep(10);return0;}然后我用perf执行它:$sudoperfrecord-esched:sched_stat_sleep-esched:sched_switch-esched:sched_process_exit-g-o~/perf.data.raw./a.out[perfrecord:Wokenup1timestowritedata][perfrecord:Capturedandwro

linux - 在 Kcachegrind 中打开 perf.data

我在某处读到可以将perf.data(来自linuxperfrecord分析工具的输出)转换为kcachegrind可以解析/绘制的格式,但是我没有找到能够执行此转换的应用程序,kcachegrind也没有打开perf.data。这可能吗:使用kcachegrind查看perf输出?我可以使用哪个工具? 最佳答案 将perf数据转换为callgrind格式的方法有两种,目前尚不清楚哪种更成熟。可以在https://github.com/ostash/perfgrind找到具有更多当前提交的perfgrind。然而,据称它缺乏调用图支

c - 如何避免在 Linux 上的 strftime() 中调用过多的 stat(/etc/localtime)?

我让我的一个记录处理程序在strace下运行了几分钟。这表明在那几分钟内对stat("/etc/localtime",..)的调用超过200000000次,这听起来有点过分和不必要。strace输出如下所示:write(1,"C13701539339309305262913711047"...,16384)=16384stat("/etc/localtime",{st_mode=S_IFREG|0644,st_size=2225,...})=0stat("/etc/localtime",{st_mode=S_IFREG|0644,st_size=2225,...})=0stat("/e

linux - 从 stat 函数输出中理解和解码文件模式值

我一直在努力理解下面提到的代码中到底发生了什么。但我无法理解。$mode=(stat($filename))[2];printf"Permissionsare%04o\n",$mode&07777;假设我的$mode值为33188$mode&07777产生一个值=420$mode值是十进制数吗?为什么我们选择07777以及为什么我们要进行按位与运算。我无法理解这里的逻辑。 最佳答案 您问题中的模式对应于一个具有644权限的常规文件(所有者为读写权限,其他所有人为只读权限),但请不要相信我的话。$touchfoo$chmod644fo

php - 文件时间 "warning stat failed for"

我已经阅读了很多关于它的问题和答案,但我仍然无法解决我的问题......我正在尝试创建一个函数来删除一天前创建的所有扩展名为“xml”或“xsl”的文件。但是我在我拥有的每个文件上都收到了这个警告:Warning:filemtime()[function.filemtime]:statfailedforpost_1003463425.xmlin/home/u188867248/public_html/ampc/library.phponline44该目录下的所有文件都具有相同的结构名称“post_+randomNum+.xml”(例如:post_1003463425.xml或post_

python - MongoDB:如何从 API 获取 db.stats()

我正在尝试在我的python代码中获取db.stats()mongoshell命令的结果(用于监控目的)。但与serverStatus不同,我不能执行db.command('stats')。我无法在mongodb文档中找到任何等效的API。我也尝试了db.$cmd的变体,但都没有奏效。所以,小问题:如何在我的python代码中获得db.stats()的结果(连接/对象的数量、数据和索引的大小等)?更大的问题:谁能解释为什么有些shell命令可以从API轻松访问,而有些则不能?这很烦人:一些与管理相关的工具可以通过db.$cmd.sys访问,一些通过db.command访问,一些通过..