zoukankan      html  css  js  c++  java
  • linux进程cpu资源分配命令nice,renice,taskset

    进程cpu资源分配就是指进程的优先权(priority)。优先权高的进程有优先执行权利。配置进程优先权对多任务环境的linux很有用,可以改善系统性能。还可以把进程运行到指定的CPU上,这样一来,把不重要的进程安排到某个CPU,可以大大改善系统整体性能。 


    一、先看系统进程:

     

    PR 就是 Priority 的简写,而 NI 是 nice 的简写。这两个值决定了PR的值,PR越小,进程优先权就越高,就越“优先执行”。换算公式为:PR(new) = PR(old) + NI 
    --------------------------------------------------------------------------- 
    二、修改进程优先级的命令主要有两个:nice,renice 

    1、一开始执行程序就指定nice值:nice

    Java代码 

    1. nice -n -5 /usr/local/mysql/bin/mysqld_safe &  

     


    linux nice 命令详解 

      功能说明:设置优先权。 

      语  法:nice [-n <优先等级>][--help][--version][执行指令] 

      补充说明:nice指令可以改变程序执行的优先权等级。 

      参  数:-n<优先等级>或-<优先等级>或--adjustment=<优先等级>  设置欲执行的指令的优先权等级。等级的范围从-20-19,其中-20最高,19最低,只有系统管理者可以设置负数的等级。 
                --help  在线帮助。 
                --version  显示版本信息。 
    --------------------------------------------------------------------------- 
    2.1、调整已存在进程的nice:renice

    Java代码 

    1. renice -5 -p 5200  
    2. #PID为5200的进程nice设为-5  

     

     


    linux renice 命令详解 

      功能说明:调整优先权。 

      语  法:renice [优先等级][-g <程序群组名称>...][-p <程序识别码>...][-u <用户名称>...] 

      补充说明:renice指令可重新调整程序执行的优先权等级。预设是以程序识别码指定程序调整其优先权,您亦可以指定程序群组或用户名称调整优先权等级,并修改所有隶属于该程序群组或用户的程序的优先权。等级范围从-20--19,只有系统管理者可以改变其他用户程序的优先权,也仅有系统管理者可以设置负数等级。 
      参  数: 
      -g <程序群组名称>  使用程序群组名称,修改所有隶属于该程序群组的程序的优先权。 
      -p <程序识别码>  改变该程序的优先权等级,此参数为预设值。 
      -u <用户名称>  指定用户名称,修改所有隶属于该用户的程序的优先权。 

    2.2、也可以用top命令更改已存在进程的nice:

    Java代码 

    1. top   
    2. #进入top后按"r"-->输入进程PID-->输入nice值  

     

     




    --------------------------------------------------------------------------- 
    三、把进程运行到指定CPU(即修改进程的"CPU亲和性"):taskset 
        两个名词 
        SMP (Symmetrical Multi-Processing):指在一个计算机上汇集了一组处理器(多CPU),各CPU之间共享内存子系统以及总线结构。 [更多...
        CPU affinity:中文唤作“CPU亲和性”,是指在CMP架构下,能够将一个或多个进程绑定到一个或多个处理器上运行。[更多...

    请先确定你的cpu核心及命名(例如四个核心:0,1,2,3):cat /proc/cpuinfo

    Java代码 

    1. taskset -cp 1 5200  
    2. #把PID为5200的进程运行到CPU#1上   
    3. #也可以在启动进程时指定:   
    4. taskset -c 1 /etc/init.d/mysql start  

     

     

     

     


    linux taskset命令详解 

    SYNOPSIS 
           taskset [options] [mask | list ] [pid | command [arg]...] 
    OPTIONS 
           -p, --pid 
                  operate on an existing PID and not launch a new task 
           -c, --cpu-list 
                  specifiy  a  numerical  list of processors instead of a bitmask. 
                  The list may contain multiple items,  separated  by  comma,  and 
                  ranges.  For example, 0,5,7,9-11. 
           -h, --help 
                  display usage information and exit 
           -V, --version 
                  output version information and exit

  • 相关阅读:
    C# 实现 Snowflake算法生成唯一性Id
    kafka可视化客户端工具(Kafka Tool)的基本使用(转)
    docker 安装kafka
    Model类代码生成器
    使用docker 部署rabbitmq 镜像
    Vue 增删改查 demo
    git 提交代码到库
    Android ble蓝牙问题
    mac 配置 ssh 到git (Could not resolve hostname github.com, Failed to connect to github.com port 443 Operation timed out)
    okhttp
  • 原文地址:https://www.cnblogs.com/xiaoleiel/p/8349659.html
Copyright © 2011-2022 走看看