存档

文章标签 ‘CPU’

Linux System and Performance Monitoring

2014年4月6日 1 条评论

写在前面:本文是对OSCon09的《Linux System and Performance Monitoring》一文的学习笔记,主要内容是总结了其中的要点,以及加上了笔者自己的一些理解。通过总结,一方面是为了加深笔者自己的理解,另一方面也是希望能对有需要的朋友有所帮助。

做为一名服务器开发工程师,经常会有分析系统性能,解决系统性能瓶颈的需求。通常我们所说的性能问题,不外乎就是CPU/Memory/IO/Network这四个方面,这四个方面每个都有各自独特之处,同时也都是相互关联的。下面就分别从这四个方面展开进行介绍。

CPU

基本概念

1. 内核调度的优先级:在Linux系统中,内核scheduler调度资源包括两种:threads(Process是由threads组成)和interrupt,这些被调度的资源是有特定的优先级的,以下从高到底:

  • Interrupts: Interrupt被设备用来通知内核相关的事件,优先级是最高的
  • Kernel(System) Processes:所有的系统进程都是以仅次于Interrupt的优先级被调度的
  • User Processes: 所有的应用程序都是run在用户态空间,以最低的优先级被内核调度
  • 阅读全文…

用google-perftool分析程序的内存/CPU使用

2012年1月3日 3 条评论

最近,用到了google-perftool分析程序的内存和CPU的使用情况,总结一下使用的一些方法和体会,分享给有需要的朋友。首先,说说google-perftool,它是由google开发的用来分析C/C++程序性能的一套工具,这里的性能分析主要包括内存和CPU两个方面,内存分析使用google-perftool所提供的tcmalloc,CPU分析使用它所提供的profiler。下面先分别介绍一下tcmalloc和profiler,然后再给出一些使用的例子,及一些使用时的注意事项。

  • 1. tcmalloc
  • tcmalloc的全称是thread cache malloc,顾名思义,它是带有thread cache的内存管理工具,具体的实现细节这里不做过多的介绍,感兴趣的朋友可以参考google官方提供的文档,或者阅读源码。这里需要注明一下tcmalloc的一些优点,和它所提供的一些分析程序内存使用的一些功能。
    tcmalloc的主要优点有两个方面,一个是内存allocate/deallocate的速度,通常情况下它的速度比glibc所提供的malloc要快;另一个方面是小内存(< =32K)的管理,它的小内存是在thread cache里面管理的,一方面减少了加锁的开销,另一方面用来表示小内存所用的额外的空间也比较小,比较节省空间。因此,对于多线程下,经常小内存的allocation/deallocation的程序(尤其多线程下使用STL比较多的程序),可以尝试使用一下tcmalloc。 阅读全文…

    80×86汇编基础(一) 寄存器(Registers)

    2009年11月16日 没有评论

    写在前面,文中所写的的8086系统都指Intel 8086系统。

    1. 8086 CPU基本架构
    8086 CPU被归为冯.诺依曼结构,如图1所示,它主要包括三个部分:中央处理单元(CPU)、内存(Memory)和输入输出设备(I/O)。这三个单元之间通过数据总线(Data bus)互相传递数据。
    80x86_cpu 阅读全文…