概述从ac程序中测量页面错误
我正在比较几个系统调用,我从哪里读/写内存。 是否有定义的API来测量C中的页面错误(页面input/输出)?
我发现这个库libperfstat.a,但它是为AIX ,我找不到任何东西的linux。
编辑:我知道在linux的time和perf-stat命令,只是探索是否有什么可用于我在C程序内使用。
在linux上实时防止小页面错误
为什么linux内核中的这段代码不会导致死循环?
渲染QWidgets时出现大量页面错误
logging内存访问会导致严重的页面错误
read()系统调用页面错误不依赖于文件大小
linux内核可以使用可分页(可交换)内存作为自己的缓冲区吗?
linux内核中的主要页面error handling程序
获取进程总页面错误
为什么设备驱动程序会导致页面错误?
识别主要页面错误原因
有getrusage函数(SVr4,4.3BSD。POSIX.1-2001;但不是所有的字段都是标准定义的)。 在linux中有几个破碎的领域 ,但man getrusage列出几个有趣的领域:
long ru_minflt; /* page reclaims (soft page faults) */ long ru_majflt; /* page faults (hard page faults) */ long ru_inblock; /* block input operations */ long ru_oublock; /* block output operations */
在wait4也报告了这种rusage (只能在外部程序中使用)。 这个由/usr/bin/time程序使用(它打印次要的/主要的页面错误计数)。
如果您正在linux上运行,则可以使用perf_event_open系统调用(由perf stat使用)。 获得正确的参数有点棘手,请查看手册页http://web.eece.maine.edu/~vweaver/projects/perf_events/perf_event_open.HTML并查看下面的代码。
没有lib的C包装,所以你必须调用它如下:
static long perf_event_open(struct perf_event_attr *hw_event,pID_t pID,int cpu,int group_fd,unsigned long flags) { int ret = syscall(__NR_perf_event_open,hw_event,pID,cpu,group_fd,flags); return ret; }
然后计算页面错误:
struct perf_event_attr pe_attr_page_faults; memset(&pe_attr_page_faults,sizeof(pe_attr_page_faults)); pe_attr_page_faults.size = sizeof(pe_attr_page_faults); pe_attr_page_faults.type = PERF_TYPE_SOFTWARE; pe_attr_page_faults.config = PERF_COUNT_SW_PAGE_FAulTS; pe_attr_page_faults.Disabled = 1; pe_attr_page_faults.exclude_kernel = 1; int page_faults_fd = perf_event_open(&pe_attr_page_faults,cpu,-1,0); if (page_faults_fd == -1) { printf(\”perf_event_open Failed for page faults: %sn\”,strerror(errno)); return -1; } // Start counting ioctl(page_faults_fd,PERF_EVENT_IOC_reset,0); ioctl(page_faults_fd,PERF_EVENT_IOC_ENABLE,0); // Your code to be profiled here ….. // Stop counting and read value ioctl(page_faults_fd,PERF_EVENT_IOC_disABLE,0); uint64_t page_faults_count; read(page_faults_fd,&page_faults_count,sizeof(page_faults_count));
这不是一个API,但是,我已经有很多的成功,通过在我的C程序中滚动我自己的和阅读/ proc / myPID / stat,其中包括我的进程的页面错误统计信息,这使我能够监视我的程序运行的时间和存储这些,但我喜欢。
请记住,这样做会导致页面错误本身,所以会有一些不准确的地方,但你会得到一个大致的想法。
有关文件格式的详细信息,请参阅此处: https : //access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_MRG/1.3/HTML/Realtime_Reference_GuIDe/chap-Realtime_Reference_GuIDe-Memory_allocation.HTML
总结
以上是内存溢出为你收集整理的从ac程序中测量页面错误全部内容,希望文章能够帮你解决从ac程序中测量页面错误所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
请登录后查看评论内容