[20130727]linux下使用taskset命令.txt

简介: [20130727]linux下使用taskset命令.txt# rpm -qilf `which taskset`Name        : schedutils                   Relocations: (not relocatable)Version     : 1.
[20130727]linux下使用taskset命令.txt

# rpm -qilf `which taskset`
Name        : schedutils                   Relocations: (not relocatable)
Version     : 1.4.0                             Vendor: Red Hat, Inc.
Release     : 2                             Build Date: Wed 13 Oct 2004 05:02:31 AM CST
Install Date: Fri 06 Jul 2007 03:30:46 PM CST      Build Host: dolly.build.redhat.com
Group       : Applications/System           Source RPM: schedutils-1.4.0-2.src.rpm
Size        : 49206                            License: GPL
Signature   : DSA/SHA1, Thu 06 Jan 2005 07:02:44 AM CST, Key ID 219180cddb42a60e
Packager    : Red Hat, Inc. <>
Summary     : Utilities for manipulating process scheduler attributes
Description :
schedutils is a set of utilities for retrieving and manipulating process
scheduler-related attributes, such as real-time parameters and CPU affinity.

This package includes the chrt and taskset utilities.

Install this package if you need to set or get scheduler-related attributes.
/usr/bin/chrt
/usr/bin/taskset
/usr/share/doc/schedutils-1.4.0
/usr/share/doc/schedutils-1.4.0/COPYING
/usr/share/doc/schedutils-1.4.0/ChangeLog
/usr/share/doc/schedutils-1.4.0/README
/usr/share/man/man1/chrt.1.gz
/usr/share/man/man1/taskset.1.gz

--使用taskset命令可以把一些进程交给指定的CPU来执行。
--写一个例子看看:
# cat /home/oracle11g/aa.sh
#! /bin/bash
while [ '1' == '1' ]
do
echo 1 > /dev/null
done

# source aa.sh &
[1] 16545

--进程号16545.
--开始修改看看:
使用top看:
top - 21:50:35 up 362 days, 12:00,  3 users,  load average: 1.46, 1.15, 0.74
Tasks: 123 total,   3 running, 120 sleeping,   0 stopped,   0 zombie
Cpu0  :  2.0% us,  1.0% sy,  0.0% ni, 59.7% id, 37.3% wa,  0.0% hi,  0.0% si
Cpu1  :  3.3% us,  0.7% sy,  0.0% ni, 69.6% id, 26.4% wa,  0.0% hi,  0.0% si
Cpu2  : 68.1% us, 31.6% sy,  0.0% ni,  0.0% id,  0.0% wa,  0.0% hi,  0.3% si
Cpu3  :  2.3% us,  2.3% sy,  0.0% ni, 95.3% id,  0.0% wa,  0.0% hi,  0.0% si
Mem:   4045276k total,  3989200k used,    56076k free,   129612k buffers
Swap:  3911788k total,     1416k used,  3910372k free,  3249360k cached

-- 主要消耗在CPU2上。

-- 指定CPU3,看看结果:
# taskset -pc 3 16545
pid 16545's current affinity list: 2
pid 16545's new affinity list: 3

top - 21:53:06 up 362 days, 12:02,  3 users,  load average: 1.15, 1.23, 0.83
Tasks: 120 total,   2 running, 118 sleeping,   0 stopped,   0 zombie
Cpu0  :  0.0% us,  0.0% sy,  0.0% ni, 99.7% id,  0.3% wa,  0.0% hi,  0.0% si
Cpu1  :  0.3% us,  0.0% sy,  0.0% ni, 99.3% id,  0.0% wa,  0.3% hi,  0.0% si
Cpu2  :  0.0% us,  0.3% sy,  0.0% ni, 99.7% id,  0.0% wa,  0.0% hi,  0.0% si
Cpu3  : 68.7% us, 31.3% sy,  0.0% ni,  0.0% id,  0.0% wa,  0.0% hi,  0.0% si
Mem:   4045276k total,  3966320k used,    78956k free,   129612k buffers
Swap:  3911788k total,     1416k used,  3910372k free,  3249360k cached

-- 可以发现消耗移动到CPU3上。
-- 先停止以上shell脚本的执行。如果修改oracle的监听进程情况如何呢?

# ps -ef | grep tns | grep -v grep
503      28027     1  0 Jul09 ?        00:00:02 /u01/app/oracle11g/product/11.2.0/db_2/bin/tnslsnr LISTENER -inherit

# taskset -pc 3 28027
pid 28027's current affinity list: 0-3
pid 28027's new affinity list: 3
[root@hisdg IP=40 ~ 23]# taskset -p 28027
pid 28027's current affinity mask: 8

从远程登录数据库。

# cat spid.sql
select spid from v$process where addr in (select paddr from v$session where sid in (select sid from v$mystat where rownum=1));

SQL> @spid.sql
SPID
------
17473

# taskset -p 17473
pid 17473's current affinity mask: 8

--可以发现远程登录后在oracle生成的进程继承了监听进程的属性。

SQL> select count(*) from emp,emp,emp,emp,emp,emp,emp;


top - 22:01:36 up 362 days, 12:11,  3 users,  load average: 1.88, 1.42, 1.05
Tasks: 118 total,   3 running, 115 sleeping,   0 stopped,   0 zombie
Cpu0  :  0.3% us,  0.3% sy,  0.0% ni, 99.0% id,  0.0% wa,  0.0% hi,  0.3% si
Cpu1  :  0.0% us,  0.0% sy,  0.0% ni, 100.0% id,  0.0% wa,  0.0% hi,  0.0% si
Cpu2  :  0.3% us,  0.0% sy,  0.0% ni, 98.0% id,  1.7% wa,  0.0% hi,  0.0% si
Cpu3  : 80.3% us, 19.7% sy,  0.0% ni,  0.0% id,  0.0% wa,  0.0% hi,  0.0% si
Mem:   4045276k total,  3964056k used,    81220k free,   129620k buffers
Swap:  3911788k total,     1416k used,  3910372k free,  3249624k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
17473 oracle11  25   0 1775m  51m  47m R 50.2  1.3   0:06.32 oracle

-- CPU资源消耗集中在CPU3上。


# taskset -pc 0,1,2,3 28027
pid 28027's current affinity list: 3
pid 28027's new affinity list: 0-3

--重新远程登录,
SQL> @spid.sql
SPID
------
17809

# taskset -p 17809
pid 17809's current affinity mask: f
>
目录
相关文章
|
4天前
|
机器学习/深度学习 缓存 监控
linux查看CPU、内存、网络、磁盘IO命令
`Linux`系统中,使用`top`命令查看CPU状态,要查看CPU详细信息,可利用`cat /proc/cpuinfo`相关命令。`free`命令用于查看内存使用情况。网络相关命令包括`ifconfig`(查看网卡状态)、`ifdown/ifup`(禁用/启用网卡)、`netstat`(列出网络连接,如`-tuln`组合)以及`nslookup`、`ping`、`telnet`、`traceroute`等。磁盘IO方面,`iostat`(如`-k -p ALL`)显示磁盘IO统计,`iotop`(如`-o -d 1`)则用于查看磁盘IO瓶颈。
|
1天前
|
监控 Linux Windows
50个必知的Linux命令技巧,你都掌握了吗?(下)
50个必知的Linux命令技巧,你都掌握了吗?(下)
|
1天前
|
Linux Shell Windows
Linux 常用基本命令
Linux 常用基本命令
|
2天前
|
Ubuntu Linux Shell
linux免交互登陆远程主机并执行命令(密钥对和Expect)
linux免交互登陆远程主机并执行命令(密钥对和Expect)
|
2天前
|
Linux
【Linux】常用命令
【Linux】常用命令
21 0
|
2天前
|
安全 Ubuntu Linux
Linux 网络操作命令Telnet
Linux 网络操作命令Telnet
16 0
Linux 网络操作命令Telnet
|
3天前
|
Linux 数据安全/隐私保护
Linux常用命令实例带注释
Linux常用命令实例带注释
30 0
|
3天前
|
Linux 开发工具 数据安全/隐私保护
Linux(19)常用解压命令记录
Linux(19)常用解压命令记录
9 0
|
4天前
|
Linux Perl
Linux系统替换字符串常用命令
请注意,`sed`命令可以非常强大,可以根据不同的需求使用不同的选项和正则表达式来进行更复杂的字符串替换操作。
17 0
|
7天前
|
安全 Linux 开发工具
Linux中可引起文件时间戳改变的相关命令
【4月更文挑战第12天】Linux中可引起文件时间戳改变的相关命令
16 0