- 浏览: 479505 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
alvin198761:
renzhengzhi 写道我参与过12306余票查询系统的开 ...
别给12306 辩解了 -
renzhengzhi:
我参与过12306余票查询系统的开发,用户请求被前面3层缓存拦 ...
别给12306 辩解了 -
renzhengzhi:
写的很好。
JAVA线程dump的分析 -
liyonghui160com:
说好的附件呢
分布式服务框架 Zookeeper -- 管理分布式环境中的数据 -
ghpaas:
orbeon作为xforms标准的实现,不论其设计器还是运行时 ...
XForms 1.1 中文翻译—第1章 关于XForms标准
本文的内容包括线程、进程和 CPU 绑定。本文还讨论了如何使用在前面几期文章中介绍的一些工具,以便对您的系统进行更改。同时,本文还介绍了 AIX Version 5.3 中用于优化 CPU 调度程序的最重要的命令以及线程绑定的各种方法。 初级的管理员可能认为进程管理只不过就是监视活动的进程、终止失控的或僵死的进程。您将会发现,进程管理并不仅仅只是使用 在这个部分中,我将介绍一些相关的工具和命令,它们可以帮助您监视和分析线程的使用。尽管在 AIX Version 4 中就引入了通过线程的使用来控制处理器使用时间的方法,但是直到 AIX 5L™ 才真正提供了帮助您监视和分析线程使用的系统管理工具。其中一种工具是 Procmon,在 AIX Version 5.3 中引入了该工具。 Procmon 可以显示进程的列表(当您的系统变化时,该列表也将动态地变化),通过这个列表,您可以收集有关系统中正在运行的进程的信息。与其他监视工具相比,其独特之处在于,它允许您运行各种命令以简化进程和线程的管理。它能够收集的、与性能优化相关的一些关键信息包括: 您甚至可以 其中还包括一个进程表视图,用于在经过排序的表格中显示线程列表。您只需选择 Show threads metrics 即可(请参见图 2)。 其他的一些菜单允许您 那么, 如果您在运行 让我们通过 当您再次使用 您还可以使用 让我们回到 尽管大多数管理员通常仅在进行 您已经了解了如何更改进程的优先级,那么对于线程又该如何操作呢?这部分内容介绍了如何更改用于计算每个线程优先级值的 CPU 调度参数。您可以使用 schedo(在 AIX Version 5.2 及更早的版本中是 schedune)来完成这项工作。 首先,您需要确保拥有下面的文件集(请参见 清单 4)。 现在,让我们报告所有的 CPU 参数,如清单 5 所示。 首先从 让我们再来讨论一下线程。用户进程的实际优先级会随着时间发生变化,这取决于该进程最近所使用的 CPU 时间。您需要查看的参数包括 在这个示例中,如果 每个 CPU 都有一个专门的运行队列。运行队列是由运行线程所组成的列表,按照线程优先级的值进行排序。一共有 256 种线程优先级(从 0 到 255)。还有一个附加的全局运行队列,其中放的是新的线程。 Schedo 通常用于更改调度程序时间片的长度。要更改时间片,可以使用 在这部分内容中,我将介绍有关 CPU 绑定的主题,即允许进程在特定的处理器上运行。这个术语本身可称为处理器关联。处理器关联有许多用途,其中一些甚至可以在调试的过程中使用。例如,您可以将线程绑定到给定的处理器,以找出导致某个挂起程序的根源。通常,在尝试将程序分散到多处理机系统(例如 SMP 系统)中时,会使用到处理器关联。您所使用的命令是 清单 7 显示了一个启用了 SMT 的双向系统的输出。 如果您希望将一个进程绑定到某个特定的 CPU,非常简单,可以执行下面的命令: 有时候,会很自然地出现处理器关联的情况。当某个线程在一个 CPU 上运行并发生了中断,通常会将它放回到相同的 CPU 上运行,因为这个处理器的缓存中仍然保存了属于该线程的相关信息。如果将其分派到另一个 CPU,它可能不得不从 RAM 中获取相关信息,而这将极大地降低处理的速度。 您还可以使用子例程来绑定线程,尽管我在进行这种工作时会倍加小心。它所执行的操作是将一个进程中所有的内核线程绑定到某个处理器,这样做将强制这些线程运行于某个特定的处理器中,直到解除对它们的绑定。 编程中使用的另一个重要线程命令是 在本文中,我介绍了控制线程使用和 CPU 绑定的重要性。您了解了一些用于分析线程和管理进程的、关键的工具和实用程序。而且,您使用 kill
命令或者甚至 nice
命令。在继续学习后面的内容之前,需要弄清楚一个基本的问题,即进程与线程之间存在怎样的关系。其答案非常的简单。进程是 AIX 用于控制系统资源使用的实体,而线程则用于控制使用的时间,因为每个内核线程都是一个单独的顺序控制流。每个进程由一个或多个线程组成。您可以根据实际情况来控制线程的使用。要做到这一点,您需要了解一些相关的工具,这些工具允许您使用线程来提高 CPU 的性能,而这正是本系列文章中最后一部分内容的研究范围。
kill
任务(终止任务),并且动态地 renice
它们(调整其优先级)。图 1 给出了关于整体性能的图形表示。要启动 Performance Workbench Platform,可以使用: # perfwb
。
图 1. Procmon partition performance 选项卡
图 2. Procmon processes 选项卡
kill
进程(终止进程)或者 renice
它们(重新调整进程的优先级),请参见图 3。
图 3. renice 命令对话框
nice
究竟是什么呢?您可以使用 nice
命令调整给定进程的优先级。所有进程的缺省值都为 20。使用 renice
命令(通过 Procmon 或者命令行)可以使得系统为给定的进程分配一个更高的或者更低的优先级。在进行该操作时,您实际上通过更改进程的 nice
值,从而更改了线程优先级的值(缺省值为 40)。ps
命令时使用了 -l
标志,那么您将看到具体的 nice
信息(请参见清单 1)。
清单 1. nice 信息
# ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
200001 A 0 12972 45770 0 60 20 dea6 764 pts/1 0:00 ksh
200001 A 0 33816 12972 3 61 20 36168 440 pts/1 0:00 ps
240001 A 207 45770 40374 0 60 20 258ec 744 pts/1 0:00 ksh
nice
启动一个新的 ksh
,更改进程的优先级:# nice --10 ksh
(请参见清单 2)。ps
查看进程表时,您将看到,对于这个进程以及它通过 fork 系统调用创建的子进程,它们的优先级都不再是缺省值。
清单 2. 使用 nice 命令得到的新的 ksh
# ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
200001 A 0 12972 45770 0 60 20 dea6 764 pts/1 0:00 ksh
200001 A 0 17246 12972 0 50 10 68a1f 748 pts/1 0:00 ksh
200001 A 0 18450 17246 1 50 10 51bb1 380 pts/1 0:00 ps
240001 A 207 45770 40374 0 60 20 258ec 744 pts/1 0:00 ksh
renice
命令(前面在介绍 Procmon 的图 3 中对该命令进行了说明),以便动态地为一个运行的进程重新分配优先级。ps
。如果您希望更详细地查看相关的线程,那么您可以使用 -mo
标志(请参见清单 3)。
清单 3. 使用 -mo
标志以便更详细地查看您的线程
# ps -mo THREAD
USER PID PPID TID ST CP PRI SC WCHAN F TT BND COMMAND
root 12800 45770 - A 0 60 1 - 200001 pts/1 - -ksh
- - - 56759 S 0 60 1 - 10400 - - -
root 44648 12800 - A 1 60 1 - 200001 pts/1 - ps -mo THREAD
- - - 64905 R 1 60 1 - 0 - - -
kmilberg 45770 40374 - A 0 60 1 - 240001 pts/1 - -ksh
- - - 54005 S 0 60 1 - 10400 - - -
ps -ef
操作时使用 ps
,但是如果您更仔细地研究它的特性,那么您将会了解到更多关于 ps
的内容。
清单 4. 检查文件集
# lslpp -lI bos.perf.tune
Fileset Level State Description
----------------------------------------------------------------------------
Path: /usr/lib/objrepos
bos.perf.tune 5.2.0.10 COMMITTED Performance Tuning Support
Path: /etc/objrepos
bos.perf.tune 5.2.0.10 COMMITTED Performance Tuning Support
清单 5. 报告所有的 CPU 参数
# schedo -a
%usDelta = 100
affinity_lim = 7
big_tick_size = 1
fixed_pri_global = 0
force_grq = 0
idle_migration_barrier = 4
maxspin = 16384
pacefork = 10
sched_D = 16
sched_R = 16
timeslice = 1
v_exempt_secs = 2
v_min_process = 2
v_repage_hi = 0
v_repage_proc = 4
v_sec_wait = 1
fixed_pri_global
开始进行分析。它的缺省设置为 0。当 CPU 准备分派线程时,它会先检查全局运行队列,然后再检查其他队列。当线程在 CPU 上的时间片结束之后,它将被重新放回到这个队列中。这可以帮助维护处理器的关联性(稍后我将介绍这部分内容)。要提高整体的线程性能,您可以将名为 RT_GRQ 的环境变量设置为 ON。这样一来,就会自动地将线程放入到全局运行队列中。如果您将缺省值从 0 更改为 1,那么所有固定优先级的线程都将放入到这个运行队列中。您可以执行下面的命令将缺省值从 0 更改为 1: #schedo -o fix_pri_global=1
。sched_R
和 sched_D
。这两个参数值的单位都是 1/32 秒,并且它们的缺省值都为 16。而且,对于刚创建的线程,其 CPU 值为 0。随着线程在 CPU 上执行时间的增加,其 CPU 使用时间将会递增。实际上,调度程序使用下面的公式来计算 CPU 使用时间: CPU usage = CPU usage*(D/32)
。D
参数设置为 32,那么线程的 CPU 使用时间将不会衰减,而该参数的缺省值为 16,这样就允许 CPU 使用时间随着时间的推移而衰减,从而使其获得更多的在 CPU 上执行的时间。schedo -o timeslice=value
选项。增加时间片的长度可以提高系统吞吐量,因为减少了上下文的切换。在进行这种更改之前,请确保反复地运行 vmstat 以确定系统中确实正在进行大量的上下文切换工作。bindprocessor
命令。假定启用了同步多线程 (SMT),这是缺省的行为,那么在运行 bindprocessor
命令时,会将物理处理器的每个硬件线程作为单独的处理器列举出来。在 POWER5 芯片中,每个处理器中有两个硬件线程。对于共享的处理器逻辑分区 (LPAR),使用这个命令可以绑定到虚拟 CPU,所以您必须非常小心,因为它可能会导致预先安排运行于特定 CPU 的应用程序出现问题。让我们首先检查一下是否启用了 SMT(请参见 清单 6)。
清单 6. 检查是否启用了 SMT
# smtctl
SMT is currently enabled.
清单 7. 一个启用了 SMT 的双向系统的输出
# bindprocessor -q
The available processors are: 0 1 2 3
# bindprocessor 12741 2
gprof
。gprof
命令为您所编译的程序(可能是用 C、Pascal、FORTRAN、或者甚至是 COBOL 编写的程序)产生一个执行概要。gprof
可以报告您的程序中所有子例程的流程控制,并为您提供每个子例程所使用的 CPU 时间。在对进程如何使用 CPU 资源进行故障诊断时,这是非常有用的。相关的数据来自于概要文件 (gmon.out)。您可以使用 gprof
对您的程序进行概要分析,并确定哪些函数正在使用 CPU。概要数据来自于调用关系图概要文件(缺省情况下是 gmon.out)。那么,在 AIX Version 5.3 中有何不同呢?因为 AIX Version 5.3 允许输出文件的概要具有用户指定的名称(通过设置特殊的环境变量),所以,为线程提供了附加的概要支持和选项,而这些都会影响所收集的概要数据的类型。schedo
对内核进行了优化,了解了与处理器关联有关的所有内容,并掌握了如何绑定 CPU。本系列文章主要介绍关于 CPU 监视的内容,共由三篇文章组成,首先引入了优化的概念,然后介绍了监视和数据收集,最后以系统优化和管理作为结束。尽管大多数的读者可能对内存子系统的优化更加熟悉,但是我希望通过本系列文章说明 CPU 监视和优化的重要性。
学习
发表评论
-
Storix简介
2012-03-27 12:10 1043简介 Storix ... -
asa阿萨
2012-03-25 23:58 1阿迪撒旦撒旦 -
适配器布局
2010-10-28 11:23 964网络性能取决于所选的硬件,如机器中的适配器类型和适配器布局 ... -
工作负载管理诊断
2010-07-13 23:15 841工作负载管理仅指评估工作负载的每个组成部分的优先级。 ... -
与磁盘或内存相关的问题
2010-07-13 23:12 874与磁盘或内存相关的问题 正如大部分实内存可用来缓冲文 ... -
在 AIX V5.3 中使用 MALLOCDEBUG 隔离并解决内存泄漏
2010-07-01 15:02 1257引言 在编写应用程序 ... -
分析AIX上的native内存泄露
2010-07-01 14:59 1468Running native profiling on ... -
AIX性能——预处理器和编译器利用
2010-06-27 20:37 1058在指令重新整理中,有几个优化级别给予编译器以不同程度的自由 ... -
AXI性能——系统调整
2010-06-27 20:37 872在有效实现应用程序后,系统总体性能的进一步提高就成了系统调 ... -
AIX性能调整——当前的机器指令
2010-06-27 20:35 886如果未出现 TLB 或高速缓存未命中的情况,绝大多数机器指令都 ... -
可分派线程
2010-06-27 20:33 846当某个线程可分派但不在运行时,它不能完成任何有用的事情。更糟的 ... -
等待线程
2010-06-27 20:31 909无论何时只要执行的程序发出不能立刻满足的请求,例如同步 I ... -
AXI性能调整——中断处理程序
2010-06-27 20:30 1065通知操作系统发生了外部事件的机制是中断当前运行线程并将控制 ... -
AIX性能调整——可执行程序
2010-06-27 20:28 933当请求运行某个程序 ... -
AIX性能调整——硬件层次结构
2010-06-27 20:26 1011通常,从一个硬件级别移动到另一级别所需要的时间主要由较低级 ... -
AIX性能调整——程序执行模型
2010-06-27 20:21 905为了清楚地检查工作负载的性能特征,需要有一个动态而非静态的 ... -
AIX4.3 TL12安装指南
2010-06-18 11:01 1175Installation instructions Te ... -
系统工作负载
2010-05-16 22:40 812系统工作负载的完整准确的定义对于预测或理解它的性能是很关键 ... -
列出可用的软件产品(lslpp 命令)
2010-05-13 09:16 1174要显示关于系统上可用软件产品的信息,请使用 lslpp 命 ... -
列出可用的字体(font 命令)
2010-05-13 09:14 1169要显示可用于显示器的字体列表,请使用 lsfont 命令。 ...
相关推荐
### AIX 5L 性能优化:中央处理器 (CPU) 性能和监视的关键知识点 #### 一、概述 AIX 5L 是 IBM 的一款高性能 UNIX 操作系统,广泛应用于企业级服务器环境中。CPU 性能优化是确保 AIX 5L 系统高效运行的关键环节之...
在AIX 5L环境下,有多种工具可用于监视CPU性能,其中许多是跨UNIX平台通用的。例如,`vmstat`是一个多功能工具,它不仅提供关于进程、内存、分页和I/O的状态信息,还能反映总体的CPU活动情况。通过对`vmstat`输出的...
在AIX 5L操作系统中,磁盘性能优化是一个至关重要的任务,因为它直接影响服务器的整体效率。磁盘I/O性能优化不仅涉及硬件配置,还包括软件层面的策略调整。本系列教程由Ken Milberg提供,旨在深入探讨AIX 5L中的磁盘...
### AIX 5L 内存性能优化 #### 一、引言 在现代IT环境中,操作系统内存管理的效率直接影响到整个系统的性能表现。对于基于IBM AIX 5L的操作系统而言,确保内存资源得到合理分配与高效利用是至关重要的。AIX 5L作为...
AIX5L内存性能优化.pdf AIX5L内存性能优化是指在AIX5L系统上对内存的优化和管理,以提高系统的性能和稳定性。本文将从监视内存的使用、分析结果、内存子系统监视、交换空间配置和内存性能优化等方面进行详细介绍。 ...
1.2 AIX 5L 内存性能优化之使用 ps、sar、svmon 和 vmstat 监视内存的使用 7 1.3 AIX 5L 内存性能优化之配置和管理交换空间,优化(VMM) 12 1.4 AIX 5.3主机性能评估-Memory性能评估 19 1.5 AIX 5L 磁盘性能优化 23 ...
【Oracle10g for AIX5L的性能调优】是指在IBM AIX 5L操作系统环境下对Oracle 10g数据库系统的性能进行优化的过程。AIX5L是一款基于UNIX的操作系统,常用于大型企业级服务器,特别是处理大量数据的数据库系统。Oracle...
它和本人整理的另一个“UNIX-IBMAIX5L参考-命令参考大全.chm”可以说是本人从unix入门到深入的红宝书和蓝宝书。 仅列出性能管理的目录如下: [ 页的底部 | 上一页 | 下一页 | 目录 | 索引 | 资料库 | 法律 | 搜索 ] ...
《AIX 5L V5.3 命令参考大全》是一本全面介绍IBM AIX 5L Version 5.3操作系统中命令使用的指南,它涵盖了从基础操作到高级管理的所有方面。AIX(Advanced Interactive eXecutive)是IBM开发的一种Unix操作系统,广泛...
- 对于想要通过AIX 5L性能与系统调优认证的专业人士来说,必须已经获得了IBM Certified Advanced System Administrator - AIX 5L V5.1认证。 - **1.1.2 推荐的前提条件:** - 拥有至少一年在AIX 5L环境下的工作...
##### 1.2 AIX5L 内存性能优化之使用 ps、sar、svmon 和 vmstat 监视内存的使用 - **ps 命令**:用于查看当前运行进程的状态,包括进程ID、CPU和内存使用率等信息。 - **sar 命令**:提供了系统的长期性能统计信息...
AIX 5L Version 5.3是AIX的一个重要版本,提供了许多增强的功能和稳定性改进。本参考大全将深入探讨AIX 5.3中的命令行工具,帮助用户更高效地管理和维护系统。 一、AIX命令基础 在AIX系统中,命令行是主要的交互...
《AIX 5L V5.3 命令参考大全》是针对IBM的AIX操作系统的一款详尽的命令指南,适用于系统管理员、开发者以及任何需要深入理解和操作AIX系统的用户。AIX(Advanced Interactive eXecutive)是IBM开发的一种Unix变体,...
**1.2 AIX5L 内存性能优化之使用 ps、sar、svmon 和 vmstat 监视内存的使用** 这一部分深入探讨了如何使用 `ps`、`sar`、`svmon` 和 `vmstat` 这些工具来监控 AIX 5.3 系统的内存使用情况。通过对这些工具的输出...
2. **资源监控与调制**:AIX提供了一系列工具,如`vmstat`、`topas`、`iostat`和`lsps -a`,用于监视CPU、内存、I/O和交换空间的使用情况,以便调整系统性能和识别潜在问题。 3. **AIX常用命令**:包括`df`(查看...
**系统性能监视和调态工具**:`topas`和`vmstat`等工具监控CPU、内存、磁盘I/O等系统资源使用情况,帮助优化系统性能。\n\n3. **系统备份及恢复**:IBM Tivoli Storage Manager(TSM)常用于AIX系统的备份,`tar`...
在AIX 5L环境中,有多种命令用于监控内存性能: - **ps命令**:`ps -ef`列出所有正在运行的进程,但对内存的详细分析需要使用`ps -gv`。它按内存使用量排序,显示每个进程的RSS(Resident Set Size,驻留集大小)...