Linux要点


Linux

常用命令,比如free strace netstat iostat top等

  • free:显示内存使用情况。
  • strace:跟踪系统调用。
  • netstat:显示网络连接。
  • iostat:显示CPU和I/O设备使用情况。
  • top:显示系统运行情况。

Linux子进程,fork的返回值,多线程下fork的风险和规避,子进程内存何时复制

  • fork:创建子进程,返回值为0表示子进程,正数表示父进程。
  • 多线程下fork的风险:子进程只复制调用fork的线程,可能导致死锁。
  • 规避方法:使用pthread_atfork注册处理函数。
  • 子进程内存复制:写时复制(Copy-On-Write)。

Linux的负载 (uptime 命令查看的东东)

uptime:显示系统运行时间、登录用户数、系统负载。

  • 系统负载:表示系统的繁忙程度,通常为1分钟、5分钟、15分钟的平均负载。

性能问题定位(brpc文档有讲)

使用perf、strace、gdb等工具定位性能问题。

  • perf:性能分析工具,分析CPU使用情况。
  • strace:跟踪系统调用,分析程序行为。
  • gdb:调试工具,分析程序崩溃原因。

文件映射

使用mmap将文件映射到内存,提高文件访问效率。

  • 特点:将文件内容映射到内存地址空间,访问文件如同访问内存。
  • 适用场景:大文件读写、共享内存。

进程内存的种类

堆、栈、数据段、代码段。

  • 堆:动态分配的内存,使用malloc、free管理。
  • 栈:函数调用时分配的内存,自动管理。
  • 数据段:全局变量、静态变量存储区。
  • 代码段:存储程序代码的内存区。

核心转储

当程序崩溃时,生成核心转储文件,用于调试。

  • 核心转储文件:包含程序的内存映像、寄存器状态等信息。
  • 适用场景:分析程序崩溃原因、调试错误。

系统调用的跟踪(strace等)

使用strace跟踪系统调用,分析程序行为。

  • strace:跟踪系统调用,显示调用参数和返回值。
  • 适用场景:调试程序、分析性能问题。

内存相关: 交换空间 页面缓存 mmap 直接io

  • 交换空间:将内存数据交换到磁盘,释放内存。
  • 页面缓存:缓存文件数据,提高访问速度。
  • mmap:将文件映射到内存,提高文件访问效率。
  • 直接IO:绕过页面缓存,直接读写磁盘,提高I/O性能。

文章作者: xucanxx
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 xucanxx !
  目录