设为首页 加入收藏

TOP

Linux系统调优介绍(三)
2023-07-23 13:39:31 】 浏览:124
Tags:Linux
at的实时监控功能更灵活。
  • 如果只是想看看系统的状态,以上工具都可以。
  • 二:查看某个进程的资源占用信息:

    1、top

    用来实时显示实时地显示系统中所有进程的资源占用情况。

    在没有htop工具的情况下查看系统资源的信息。

    按下 c 快捷键将会显示进程的完整命令行参数。
    

    image

    在top命令中按下快捷键盘’c‘之后。

    image

    2、ps

    主要用来列出系统中所有进程的信息。

    例如:运行了某个脚本,查看脚本是否启动

    # 运行一个测试脚本
    ehigh@ubuntu:~$ bash test.sh &
    [1] 21738
    
    # 查看这个脚本是否正常启动
    ehigh@ubuntu:~$ ps -ef | grep test.sh
    ehigh     21738  14974  0 11:04 pts/19   00:00:00 bash test.sh
    

    3、htop

    ttop 命令的一个增强版,可以实时地显示系统中所有进程的资源占用情况。

    image

    4、pidstat

    实时地显示某个进程的 CPU 使用率、内存占用等。

    5、strace

    追踪某个进程的系统调用信息,可以捕获和打印出应用程序和内核之间发生的所有系统调用和信号,包括传递的参数和返回值,以及发生的错误。

    例如:

    # 查看执行某个命令的系统调用信息
    strace `ls -l /tmp`
    
    # 查看某个进程的系统调用:查看pid为1435这个进程的系统调用
    sudo strace -p 1435 
    

    一般可以使用strace工具来查看某个进程读取了哪些文件,进程运行慢,时间都花费在了哪些地方以及系统的调用函数等。

    使用场景总结:

    • 如果想要查看系统进程和资源的占用情况,就使用top或htop。
    • 如果想要追踪某个进程的系统调用,调用耗时等信息就是用strace工具
    • 如果只是查看某个进程特定的详细信息,就使用ps工具,想要进行深入分析就是用pidstat工具。

    系统调优方法

    操作系统:操作系统是一个系统软件,操作系统的作用是管理和控制计算机硬件

    内核:内核是操作系统的核心部分,是操作系统管理计算机硬件和软件资源的核心代码。操作系统则由内核和其他系统工具程序共同组成的。例如文件管理器、用户界面、设备驱动程序等。

    程序:指的是一组计算机指令和数据,可以被计算机执行。程序是静态的,通常存储在硬盘或其他存储设备中,需要通过操作系统加载到内存中才能运行。

    进程:是计算机中正在运行的程序的实例。进程是操作系统中进行资源分配的基本单位。

    线程:是进程中的一个执行单元,是操作系统调度的最小单位。

    内核空间:内核空间是操作系统的核心部分,是操作系统内核运行的地址空间。内核空间是操作系统独占的,只有内核才能访问这个地址空间。

    用户空间:是程序运行的地址空间。用户空间是操作系统分配给应用程序的地址空间,应用程序可以在这个空间中运行和使用系统资源。

    进程和程序的关系:首先程序被加载到内存中,没有开始运行的时候,只是一组静态的代码和数据。当程序被操作系统调用并开始执行时,就成为了一个进程。一个进程里面包含了程序代码、数据、寄存器等系统资源,所以每个进程都是一个程序的实体,进程是操作系统中进行资源分配和调度的基本单位。

    两个虚拟文件系统:

    在Linux中,/sys和/proc是两个不同的虚拟文件系统,里面的信息都是动态生成的,因为这两个目录中的数据信息随着系统状态的变化而变化。这两个文件提供了操作内核数据的接口。

    /proc文件系统:主要用于展示进程相关的信息,例如可以查询内核状态和进程信息,例如CPU、内存、网络、硬件等系统信息。

    /sys文件系统:则用于展示设备和内核参数的信息。/sys中不包含进程的信息,只有系统的状态和设备信息。

    说明:

    • 修改了/proc/sys中的参数后可以通过sysctl工具来实现持久化配置。
    • 修改了/sys 中的信息不能使用sysctl工具来持久化配置,需要写入到/etc/rc.locl这个文件中实现持久化配置。

    例如:echo deadline > /sys/block/sda/queue/scheduler就需要放到/etc/rc.locl中。

    一:限制和控制进程的资源使用

    1、ulimit工具

    进程资源限制和控制的内容:

    • 进程的最大 CPU 时间
    • 进程可以使用的最大虚拟内存
    • 进程可以使用的最大物理内存
    • 进程可以打开的最大文件数
    • 进程可以创建的最大子进程数等等

    使用ulimit工具进行资源限制的时候有两种方式:

    方式一:通过在/etc/security/limits.conf 中修改资源限制,这样设置重启也会生效,可以针对系统中的所有用户或特定用户进行设置。

    例如:显示当前用户进程的所有限制信息

    ehigh@ubuntu:~$ ulimit -a
    core file size          (blocks, -c) 0
    data seg size           (kbytes, -d) unlimited  # unlimited表示不限制
    scheduling priority             (-e) 0
    file size               (blocks, -f) unlimited    #文件的最大大小,一个block=4kb
    pending signals                 (-i) 47424
    max locked memory       (kbytes, -l) 65536
    max memory size         (kbytes, -m) unlimited
    open files                      (-n) 65535   # 一个进程可以同时打开的最大文件数
    pipe size            (512 bytes, -p) 8
    POSIX message queues     (bytes, -q) 819200
    real-time priority              (-r) 0
    stack size              (kbytes, -s) 8192
    cpu time               (seconds, -t) unlimited
    max user processes              (-u) 4096        # 一个用户可以创建的最大进程数。
    virtual memory          (kbytes, -v) unlimited   # 虚拟内存的最大大小
    file locks                      (-x) unlimited
    
    # 如果要查看指定进程的限制信息需要使用-p参数指定进程的pid
    		# 例如:ehigh@ubuntu:~$ ulimit -a -p 1 表示查看进程为1的进程及其子进程的限制信息
    

    例如:调整当前shell中某个进程的资源限制信息

    # 限制当前shell 进程及其子进程的资源信息
    -c:设置进程的核心转储文件大小限制,单位为字节。
    	# 核心转储文件(core dump file)是指在程序崩溃或异常终止时,系统保存的程序内存映像文件,通常用于分析和调试程序崩溃的原因。
    # 例如,要将当前进程的核心转储文件大小限制设置为 10MB,可以使用命令:ulimit -c 10000000
    -m:设置进程的最大内存限制,单位为 KB。
    # 例如,要将当前进程的最大内存限制设置为 1GB,可以使用命令:ulimit -m 1048576
    
    -n:设置进程可以打开的最大文件数。
    # 例如,要将当前进程可以打开的最大文件数设置为 2000,可以使用命令:ulimit -n 2000
    
    -u:设置进程可以创建的最大用户进程数。
    # 例如,要将当前进程可以创建的最大用户进程数设置为 100,可以使用命令:ulimit -u 100
    
    # 限制指定的进程需要使用 -p 参数
    	例如:将进程 ID 为 12345 的进程的最大打开文件数限制设置为 1000,命令为:
    首页 上一页 1 2 3 4 5 6 7 下一页 尾页 3/7/7
    】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
    上一篇ssh 远程连接方式总结 下一篇centos8-x86_64安装kylinv10-arrc..

    最新文章

    热门文章

    Hot 文章

    Python

    C 语言

    C++基础

    大数据基础

    linux编程基础

    C/C++面试题目