首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    [linux][atop]atop的改进和在统计io上遇到的问题

    前言 互联网公司一般都会运行着几千到几万的服务器。一般的监控会采用类似ganglia/falcon类似的工具,在本地启动一个agent,把数据统计上报到集中式的服务器中,用来监控和分析系统的问题。 另外,有atop这样的工具,可以运行在服务器上,在本地写下record文件,atop命令本身也可以分析record文件,其中保存的数据的粒度更加细致,可以精确到线程级别,还有IPC,主频等等。 经验来看,atop每天生成的record文件大约500M左右,保存最近的一段时间,似乎也不是问题。用集中式的监控,配合上atop,对于问题分析来说,会有一些帮助。 分析 1,atop的改进 atop的代码量本身并不大,官方的代码在: https://github.com/Atoptool/atop.git 在使用atop的过程中,遇到了一些问题,作者也做了相应的修改: https://github.com/bytedance/atop 在bytedance-features分支上。作者把patch发送给maintainer,但是maintainer一直没有回复。在这里,列举一下改动的内容,如下。 2,smaps的优化 尝试使用smaps_rollup代替smaps,用来提高atop收集进程的PSS内存使用的效率。这个patch会在4.14上有所提升。一般情况下,建议在atop收集的时候不要加上-R选项。因为在atop读/proc/PID/smaps的时候,会walk整个PID进程的页表,期间会lock住内存页表的锁。如果在这期间PID进程发生了page fault,也需要lock,就会造成锁的进程。影响PID进程的性能。 3,数据破损问题 atop使用裸数据的方式保存record文件,其中包括三部分:raw record,就是头信息; scompbuf,是系统状态信息的数据; pcompbuf,是task级的状态信息数据,大小和task数量有关系。为了减小record文件的大小,对于 scompbuf和pcompbuf还采用了压缩。所以,数据必须完整的 rr,scompbuf,pcompbuf顺序写下去的,否则atop无法识别数据。 good case : ... rr,scompbuf,pcompbuf ... rr,scompbuf,pcompbuf ... bad case : ... rr,scompbuf[missing] ... rr,scompbuf,pcompbuf … 例如上面的例子,在写完rr,scompbuf之后,atop发生了crash,再重新启动,就会丢失后面的 pcompbuf,造成了整个record文件的不可用。 在patch中,作者使用writev进行写入数据,要么都写入成功,要么都写入不成功,用来防止这种case发生。 4,IPC造成的虚拟机性能抖动 IPC,instructions per cycle。可以用来衡量CPU运行的效率。通常是通过perf采集的数据。 提到perf,就要说明一下它的工作原理:intel的CPU上集成了PMU,用来采集硬件的信息。可以收集的硬件信息很多,可以通过perf list | grep Hardware来看。但是硬件的寄存器有数量限制,所以需要通过wrmsr指令告诉CPU收集哪些具体的事件,再通过rdpmc指令来读取对应的数据。 在虚拟化场景下,在虚拟机中使用PMU又复杂了一下,在虚拟机中执行wrmsr和rdpmc的时候,都需要虚拟机从none-root模式退出,影响了虚拟机的性能。 在patch中,作者让atop支持perfevents的配置,支持三种模式:enable模式,启用perf收集IPC。disable模式,禁用perf收集IPC。auto模式,在启动的时候,atop自动检查是否在虚拟机中运行,如果在虚拟机中,禁用;在物理级中,启用。默认是auto模式。 5,减小record文件 如果是大规格的服务器,40CPU,甚至到96CPU,通常运行大量的docker,里面运行了很多的task。其中很多task占用资源很少,但是依然会占用atop的record文件。 在patch中,支持了配置参数recordcputop & recordmemtop。用来配置收集cpu和内存的topN。其他的task可以忽略。作者测试线上的服务器36CPU, about 500 processes的场景,大约节省了40%的磁盘空间。 6,加速读record 一般在ganglia上看到系统抖动,例如下午三点十分,在对应的服务器上执行: atop -r / var/log/atop/atop_xxxx -b 15:10 如前文所述,因为rawrecord的原因,则会从头读到尾,直到匹配到对应的时间。对于log盘的使用,尤其是虚拟化场景,会限制IOPS。这

    02

    清理C盘非必要文件(从认识到C盘空间管理)

    1:C盘与其它盘符的关系 C盘是计算机的硬盘分区之一,同我们计算机系统中可以看见的其它盘符一样,都可以进行存储数据。 说明一下D,E盘这些类似的盘符只是计算机系统中可见的盘,但是在实际的物理状态下是不存在的。都是逻辑上建立的分区,所谓逻辑不过就是虚拟出来的而已。 我们的电脑硬盘需要进行分区,才可以进行合理有效的利用。在分区的时候我们一般进行确定一个基本的主分区,然后就是扩展分区,扩展分区下面我们就进行逻辑划分,逻辑划分出来的就是D盘,E盘,F盘这些。 我们的目前的磁盘啊只能进行划分4个主分区,为什么呢?因为硬盘只提供分区表64个字节的存储空间,而每个分区的参数只占据16个字节,所以我们就只能最多划分4个主分区。然后扩展分区就是和主分区和不能大于四。当主分区划分满后,就没有扩展分区了。但是对于系统的设计效率,或者计算机及数据执行的效率而讲,我们这样做显然不明智。

    02

    计算机硬件组成及操作系统

    1、什么是buffer与cache,它们各自的作用是什么   linux系统会把内存分为两种区域:     buffer:缓冲区,攒一大波数据,再刷入硬盘     cache:缓存,把硬盘的数据在内存中缓存好,cpu取的时候可以直接从内存取 2、什么是内核态与用户态   内核态——>操作系统正在控制硬件   用户态-->应用程序正在运行 3、机械磁盘的IO延迟时间=平均寻道时间4ms+平均延迟时间5ms 4、一个7200转的硬盘带来的IO延迟大概是9ms 5、操作系统的启动流程是什么?   1、计算机加电   2、启动BIOS(计算机启动一定会先启动bios系统),扫描启动设备,从某一个启动设备中找到操作系统   3、读取启动设备的第一个扇区的大小(称之为主引导记录mbr)     446 bootloader=》grub程序     64分区信息     2结束标志位   4、grub程序负责将操作系统内核装载入内存,启动操作系统   5、操作系统会让BIOS去检测驱动程序

    03
    领券