嵌入式Linux内存使用与性能优化.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式Linux内存使用与性能优化

嵌入式Linux内存使用与性能优化 5.4 性能分析 5.4 性能分析 3种原因。 (1)程序的运算量很大,导致CPU过于繁忙,CPU是瓶颈。 可以在设备上运行“top”命令,如果某个进程的CPU利用率很高,则说明CPU是性能瓶颈。 (2)程序需要做大量的I/O,读写文件、内存操作等等,CPU更多的是处于等待,I/O部分成为程序性能的瓶颈。 运行“top”命令,系统内进程的CPU利用率并不高,这时可以通过proc目录下的相关文件(后面将会讲到)查看系统I/O情况。如果系统存在大量的I/O,则可以断定I/O为性能瓶颈。 对于大量I/O操作引起的程序性能问题,笔者向大家推荐一篇文章:《使用异步I/O大大提高应用程序的性能》,网址是/developerworks /cn/linux/l-async/。这篇文章说得很透彻,也很详细,笔者就不再重复了。 (3)程序之间相互等待,结果CPU利用率很低,但运行速度依然很慢,程序间的共享与死锁制约了程序的性能。 如果系统的CPU利用率并不高,而且也不存在大量的I/O操作,那么很可能是多个线程之间相互等待造成的,这时就需要对程序进行大规模的重构。 本书将性能优化的重点放在第一种情况。 proc目录 通过proc目录,能够了解到CPU和IO设备的工作状况,从而能够帮助分析导致程序性能低下的原因。 1.系统相关 还是先通过proc目录,了解整个系统的性能。 # cat /proc/stat cpu 5116 0 7801 249195 60 41 55 cpu0 5116 0 7801 249195 60 41 55 intr 364129 0 0 0 0 0 0 0 0 7 7 93 0 0 0 0 69 0 0 0 0 3 4250 0 0 1 0 0 0 8561 262014 0 0 0 85936 839 2 0 0 1157 0 1152 0 33 0 0 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ctxt 231056 btime 1167696676 processes 515 procs_running 1 procs_blocked 0 因为嵌入式设备中一般只有一个CPU,所以这里只关注第一行。 cpu 5116 0 7801 249195 60 41 55 cpu后面数值分别代表着CPU在不同状态下所用的时间,其单位为jiffy(0.01s),7个数值的含义分别是: user(5116):从系统启动开始累计到当前时刻,用户态的CPU时间,不包含nice值为负的进程。 nice(0):从系统启动开始累计到当前时刻,nice值为负的进程所占用的CPU时间。 system(7801):从系统启动开始累计到当前时刻,内核所占用的CPU时间。 idle(249195):从系统启动开始累计到当前时刻,除硬盘IO等待时间以外其他等待时间。 iowait(60):从系统启动开始累计到当前时刻,硬盘IO等待时间。 irq(41):从系统启动开始累计到当前时刻,硬中断时间。 softirq(55):从系统启动开始累计到当前时刻,软中断时间。 由此可以推导出:CPU时间=user+system+nice+idle+iowait+irq+softirq CPU的利用率=1-(idle)/(user+system+nice+idle+iowait+irq+softirq)。 根据CPU的利用率,可以知道当前系统的CPU的负载情况。 从这些数据中,可以分析出性能瓶颈在哪: (1)程序代码有问题,导致占用了大量的CPU,可以通过 CPU用户态利用率=(user+nice)/(user+system+nice+idle+iowait+irq+softirq)来了解。 (2)程序代码调用了大量的系统调用,导致Linux内核占用了大量的CPU,可以通过 CPU内核态利用率=(system)/(user+system+nice+idle+iowait+irq+softirq)来了解。 (3)系统和Flash、内存等有大量的交互和等待,从而导致系统

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档