标签: vmstat

找出哪个任务在 linux 上产生了大量的上下文切换

根据 vmstat,我的 Linux 服务器(2xCore2 Duo 2.5 GHz)每秒持续进行大约 20k 次上下文切换。

# vmstat 3
procs -----------memory----------  ---swap-- -----io----  -system-- ----cpu----
 r  b   swpd   free   buff  cache    si   so    bi    bo   in    cs us sy id wa
 2  0   7292 249472  82340 2291972    0    0     0     0    0     0  7 13 79  0
 0  0   7292 251808  82344 2291968    0    0     0   184   24 20090  1  1 99  0
 0  0   7292 251876  82344 2291968    0    0     0    83   17 20157  1  0 …
Run Code Online (Sandbox Code Playgroud)

performance-monitoring kernel performance-tuning vmstat context-switch

13
推荐指数
2
解决办法
5万
查看次数

性能调优高负载 Apache 服务器

我希望了解我在(对我们而言)负载较重的 Web 服务器上看到的一些服务器性能问题。环境如下:

  • Debian Lenny(所有稳定包 + 修补安全更新)
  • 阿帕奇 2.2.9
  • PHP 5.2.6
  • Amazon EC2 大型实例

我们看到的行为是,网络通常感觉是响应式的,但开始处理请求会有轻微的延迟——有时是几分之一秒,有时是我们高峰使用时间的 2-3 秒。服务器上的实际负载报告为非常高 - 通常为 10.xx 或 20.xx,如top. 此外,在这些时间(甚至vi)在服务器上运行其他东西非常慢,所以负载肯定在那里。奇怪的是 Apache 仍然非常敏感,除了最初的延迟。

我们使用 prefork 将 Apache 配置如下:

StartServers          5
MinSpareServers       5
MaxSpareServers      10
MaxClients          150
MaxRequestsPerChild   0
Run Code Online (Sandbox Code Playgroud)

和 KeepAlive 为:

KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
Run Code Online (Sandbox Code Playgroud)

查看服务器状态页面,即使在这些负载很重的时候,我们也很少达到客户端上限,通常处理 80-100 个请求,其中许多请求处于保持活动状态。这告诉我将初始请求缓慢排除为“等待处理程序”,但我可能错了。

Amazon 的 CloudWatch 监控告诉我,即使我们的操作系统报告的负载大于 15,我们的实例 CPU 利用率也在 75-80% 之间。

示例输出top

top - 15:47:06 up 31 days,  1:38,  8 users,  load average: 11.46, …
Run Code Online (Sandbox Code Playgroud)

debian performance-tuning vmstat amazon-ec2 apache-2.2

13
推荐指数
1
解决办法
1万
查看次数

您如何解释以下 vmstat 输出?

考虑以下五台机器(名为 c、h、j、s 和 u)及其各自的vmstat 1输出。

鉴于来自 vmstat 输出的信息:

  • 您认为哪些机器状态良好?为什么?你的理由是什么?
  • 您认为哪些机器状态不佳?为什么?你的理由是什么?你会如何修复它?升级内存、CPU、IO 子系统或其他什么?

我正在尝试学习如何获得解释 vmstat 输出的直观感觉。

机器c:

 # vmstat 1
 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
  r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
  1  0      4   9456  10692 304020    0    0   193    92  310  131  7  1 80 11  2
  2  0      4  10212  10676 303020    0    0   412    40 1265  514 11  0 80  8  2
  1  1      4 …
Run Code Online (Sandbox Code Playgroud)

linux operating-system performance-monitoring vmstat

11
推荐指数
1
解决办法
8588
查看次数

如何使用 vmstat 获取内存使用百分比?

我需要从 vmstat 中获取内存使用率,但我不太明白 vmstat 中显示的一些与内存相关的数字。

特别是,给定这样的输出

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0 139728  45396 199128 1236360    1    2     4   622    3    1 51  4 43  2  0
Run Code Online (Sandbox Code Playgroud)

系统的总内存量是多少?是'swpd' + 'free' + 'buff' + 'cache',总共是1620612吗?

系统的可用内存量是多少?是否为 45396,如“免费”列中所示?

问题是它们不加起来,甚至看起来与“顶级”报告的内容不符。我与上面的 'vmstat's 几乎同时使用的 'top' 的输出是:

[...]
Mem:   4059616k total,  3965504k used,    94112k free,   200020k buffers
[...]
Run Code Online (Sandbox Code Playgroud)

所以......我假设'vmstat'中一定有我不知道的隐藏数字/选项?

为此,我需要使用 'vmstat' 而不是其他命令,因为这是要求的内容。

所以理想情况下,我想从 'vmstat' 实现的是内存使用百分比,如下所示:

<used_memory>/<total_memory> * …
Run Code Online (Sandbox Code Playgroud)

linux memory vmstat

9
推荐指数
1
解决办法
5万
查看次数

服务器负载高,CPU 空闲。NFS的原因?

我遇到了一个场景,我看到服务器负载很高(有时超过 20 或 30)并且 CPU 使用率非常低(98% 空闲)。我想知道这些等待状态是否作为 NFS 文件系统连接的一部分出现。这是我在 VMStat 中看到的

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 2  1      0 1298784      0      0    0    0    16     5    0    9  1  1 97  2  0
 0  1      0 1308016      0      0    0    0     0     0    0 3882  4  3 80 13  0
 0  1      0 1307960      0      0    0    0   120     0    0 2960 …
Run Code Online (Sandbox Code Playgroud)

linux vps nfs centos vmstat

8
推荐指数
1
解决办法
2万
查看次数

在 Linux 上,vmstat 命令和/或 /proc/vmstat 报告的页面大小是多少?

正如许多人在 StackExchange 和其他地方所说的那样,Linux 的典型内核/mmu 页面大小是 4 KiB。我已经确认我的操作系统/架构(RHEL 6.6,Intel Xeon E5-2690)就是这种情况。

现在,除其他外,该vmstat -s命令报告“页面调入”和“页面调出”,它们是在启动时从 0 开始的计数器。我已经确认,在任何给定的时刻,这些值都与在pgpginpgpgout条目中找到的值完全相等/proc/vmstat(vmstat 命令是否从/proc/vmstat?)。其他命令,特别是sar -B报告pgpgin/spgpgout/s作为特定时间间隔内每秒调入/调出的 Kibibytes。

在最近的测试中,我看到pgpgin/spgpgout/s来自 sar 的值也完全对应于从 vmstat 值计算出的特定时间间隔的速率。这使我得出结论,vmstat 报告大小为 1 KiB 的页面的值。因此, 的pgpgin/out/proc/vmstat是自启动以来调入/调出的 KiB 数。

我的问题是:

  1. 这是一个有效的结论吗,以及
  2. 如果是这样,为什么 vmstat 和其他工具以 1 KiB 页而不是作为操作系统和体系结构的“通用货币”的 4 KiB 页报告?特别是,vmstat 说的是“ pages paged in/out”,而不是“ KiBs paged in/out”。这令人困惑。

linux vmstat paging

7
推荐指数
1
解决办法
633
查看次数

在 Windows 上从命令行确定可用内存

我想监视四台机器上的可用内存,每台机器都运行 Windows Server 2003 R2 SP2 64 位。每个盒子有 31.7GB 的 RAM。我想定期运行一个命令行工具,这样我就可以收集输出,然后用它制作图表。

我使用 Cygwin 定期运行了一些测试并收集了 vmstat 输出。我看到这样的数字:

0  0 1235228 4194303      0      0    0    0     0     0 4652 3089  1  5 94  0
0  0 1235228 4194303      0      0    0    0     0     0 4718 7591  5  4 91  0
0  0 1235228 4194303      0      0    0    0     0     0 5027 7816  5  4 92  0
0  0 1235228 4194303      0      0    0    0     0     0 4886 7099  3  3 93  0 …
Run Code Online (Sandbox Code Playgroud)

windows-server-2003 performance-monitoring vmstat diagnostic memory-usage

6
推荐指数
1
解决办法
2万
查看次数

vmstat -f 显示大量分叉

我有一个生产服务器,它在运行vmstat -f. 关于可用于帮助找出分叉起源的步骤的任何建议?

vmstat -f 1
      6650796 forks
Run Code Online (Sandbox Code Playgroud)

编辑:

[~]$ ./forks.sh 
Forks in last 2 seconds: 20 
Forks in last 2 seconds: 40 
Forks in last 2 seconds: 58 
Forks in last 2 seconds: 9 
Forks in last 2 seconds: 6 
Forks in last 2 seconds: 28 
Forks in last 2 seconds: 8 
Forks in last 2 seconds: 10 
Forks in last 2 seconds: 15 
Forks in last 2 seconds: 9
Run Code Online (Sandbox Code Playgroud)

linux vmstat

4
推荐指数
1
解决办法
5974
查看次数

非零 vmstat "si/so" 值的解释

在解释非零 vmstat“si/so”值方面有哪些有用的经验法则?什么时候这些值“正常”,什么时候它们表明内存情况有问题?

在一般情况下,这个问题当然很难回答,但我正在寻找经验法则而不是确切的规则。

linux memory vmstat

4
推荐指数
1
解决办法
1779
查看次数