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

[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

>

时间: 2024-08-07 00:27:19

[20130727]linux下使用taskset命令.txt的相关文章

如何通过c语言实现Linux下的top命令来获取cpu利用率?

问题描述 如何通过c语言实现Linux下的top命令来获取cpu利用率? 如何通过c语言实现Linux下的top命令来获取cpu利用率?我下载了好几个版本的procps但是在Ubuntu下编译里面的top.c时都出错,求各位大神帮忙解答. 解决方案 linux下用top命令查看cpu利用率超过100%linux下用top命令查看cpu利用率超过100%LINUX下查看CPU使用率的 top 命令 解决方案二: #include <stdio.h>#include <unistd.h>

实例详解Linux下的Make命令_Linux

前言 无论是在linux 还是在Unix环境 中,make都是一个非常重要的编译命令.不管是自己进行项目开发还是安装应用软件,我们都经常要用到make或make install.利用make工具,我们可以将大型的开发项目分解成为多个更易于管理的模块,对于一个包括几百个源文件的应用程序,使用make和 makefile工具就可以简洁明快地理顺各个源文件之间纷繁复杂的相互关系.而且如此多的源文件,如果每次都要键入gcc命令进行编译的话,那对程序员 来说简直就是一场灾难.而make工具则可自动完成编译

[20170301]Linux下删除怪异文件名.txt

[20170301]Linux下删除怪异文件名.txt --//这几天一直在测试数据库在线日志损坏,使用备库备用日志的修复试验. --//在测试中不知道为什么在自己的机器中产生许多怪异的文件,主要是文件名怪. --//估计是copy & paste 惹得祸,人在疲惫的情况下很容易犯低级错误.^_^ --//我当时采取方法把正常的文件移动别的目录,然后再删除整个目录的方法,有空测试一下这些文件如何删除. 1.建立测试环境: $ touch ^G $ touch ^V^V $ touch a $ t

[20161229]linux下使用oclumon命令(rac)

[20161229]linux下使用oclumon命令(rac).txt --11G RAC下grid 存在一个命令oclumon可以了解监测群集健康.简单了解一下. 1.环境: SYS@+ASM1> select * from v$version where rownum<=1; BANNER -------------------------------------------------------------------------------- Oracle Database 11g

Linux下通过script 命令记录(数据库)操作步骤

对DBA而言,经常碰到升级数据库或是apply patch,以及有些时候需要运行大量的脚本.对于这些操作我们希望现在在屏幕同时又输出的文件以备后续查询过程中曾经丢失的步骤或错误.Linux下的script命令就是解决这个问题的好帮手   1.script命令描述   复制代码 代码如下: script命令会记录所有的操作到文件同时在屏幕上输出,直到终止登陆的会话,或使用CRTL+D,或使用exit退出则停止记录. 这个命令对于数据库的升级或是重要设置的情形下使用可以用于后续查询操作成功或失败.

怎么样称得上是Linux下优秀的命令行计算器

怎么样称得上是Linux下优秀的命令行计算器 每个现代的Linux桌面发行版都预装着一个带有图形界面的计算器程序.不过如果你的工作区中全是命令行窗口,那么你一定会在其中的一个命令行窗口中处理一些数字相关的问题.或许你在寻找一款基于命令行的计算器程序.如果是这样的话,GNU bc("basic calculator"的缩写)会是你不二的选择.当然Linux下有很多基于命令行的计算器应用,我认为GNU bc是功能最强大和最有用的. 在GNU时代之前,bc实际上是一个著名的精密计算语言.它的

试试Linux下的ip命令,ifconfig已经过时了

试试Linux下的ip命令,ifconfig已经过时了 linux的ip命令和ifconfig类似,但前者功能更强大,并旨在取代后者.使用ip命令,只需一个命令,你就能很轻松地执行一些网络管理任务.ifconfig是net-tools中已被废弃使用的一个命令,许多年前就已经没有维护了.iproute2套件里提供了许多增强功能的命令,ip命令即是其中之一. Net tools vs Iproute2 要安装ip,请点击这里下载iproute2套装工具 .不过,大多数Linux发行版已经预装了ipr

关于linux下的cp命令 如何把文件拷贝到任意文件夹下

问题描述 关于linux下的cp命令 如何把文件拷贝到任意文件夹下 比如将etc下的hosts文件拷贝:cp /etc/hosts ~ 该文件就会被拷贝至用户文件夹下 可是如果想在etc下再拷贝一份 应该怎么操作 这样的命令:cp /etc/hosts ~/etc/host.new 会被显示无效 是不是只能把文件拷贝到/Users/下的用户文件夹里 解决方案 应该是不可以的,man cp可以看到: Copy SOURCE to DEST, or multiple SOURCE(s) to DIR

Linux下使用blkid命令查询设备及文件系统信息的方法

在Linux下可以使用blkid命令对查询设备上所采用文件系统类型进行查询.blkid主要用来对系统的块设备(包括交换分区)所使用的文件系统类型.LABEL.UUID等信息进行查询.要使用这个命令必须安装e2fsprogs软件包. 直接使用blkid可列出当前系统中所以已挂载文件系统的类型.默认情况下 lsblk 会将块设备输出为树状格式:NAME -- 设备的名称MAJ:MIN -- Linux 操作系统中的每个设备都以一个文件表示,对块(磁盘)设备来说,这里用主次设备编号来描述设备.RM -