【问题标题】:What does the sbwait process state imply in FreeBSD top?sbwait 进程状态在 FreeBSD 顶部意味着什么?
【发布时间】:2012-10-03 03:34:44
【问题描述】:

在 FreeBSD 系统上,在下面的顶部输出中,mysql 守护进程处于“sbwait”状态。这意味着什么?

last pid: 12833;  load averages:  0.18,  0.26,  0.25    up 3+17:40:21  04:58:46
26 processes:  1 running, 25 sleeping
CPU: 16.5% user,  0.0% nice, 12.8% system,  6.8% interrupt, 63.9% idle
Mem: 184M Active, 137M Inact, 88M Wired, 6308K Cache, 53M Buf, 7192K Free
Swap: 4096M Total, 420K Used, 4095M Free

  PID USERNAME  THR PRI NICE   SIZE    RES STATE    TIME   WCPU COMMAND
 1772 mysql      17  30    0   224M   165M sbwait 511:31 14.79% mysqld
12833 root        1  20    0  9944K  1488K RUN      0:00  0.10% top
 1472 root        1  20    0  9612K   828K select   5:07  0.00% powerd
 1465 root        1  20    0 11296K  1644K select   2:01  0.00% ntpd
 1804 root        1  20    0 11324K  2140K select   0:37  0.00% sendmail
 1403 root        1  20    0 12200K  2320K select   0:27  0.00% nmbd
 1814 root        1  20    0  9644K  1004K nanslp   0:08  0.00% cron
 1407 root        1  20    0 20756K  3756K select   0:06  0.00% smbd
 1273 root        1  20    0  9612K  1036K select   0:04  0.00% syslogd
11937 root        1  20    0 15788K  3124K select   0:03  0.00% sshd
 1808 smmsp       1  20    0 11324K  1864K pause    0:01  0.00% sendmail
 1438 root        1  20    0 20840K  3696K select   0:00  0.00% smbd
 1111 _dhcp       1  20    0  9540K  1136K select   0:00  0.00% dhclient
11941 root        1  20    0 10940K  2024K pause    0:00  0.00% csh
 1517 mysql       1  52    0  9924K  1072K wait     0:00  0.00% sh
 1073 root        1  47    0  9540K  1012K select   0:00  0.00% dhclient
 1797 root        1  20    0 13064K  1892K select   0:00  0.00% sshd

【问题讨论】:

    标签: freebsd


    【解决方案1】:

    表示进程中的一个线程正在等待数据到达某个套接字。 top 的默认模式对于像 mysqld 这样的线程进程来说信息量不是很大;虽然您有 17 个 mysql 线程,但 top 在此模式下只能显示其中一个。您应该在顶部使用“-H”标志(或在顶部使用“H”键盘命令)来分别查看各个线程,这将显示每个线程的不同状态。

    【讨论】:

      【解决方案2】:

      使用来源:

      find /usr/src -type f  -exec grep -H sbwait {} \+
      

      这会给你一些文件来查看。

      看/usr/src/sys/kern/uipc_sockbuf.c:

      /*
       * Wait for data to arrive at/drain from a socket buffer.
       */
      int
      sbwait(struct sockbuf *sb)
      {
      
              SOCKBUF_LOCK_ASSERT(sb);
      
              sb->sb_flags |= SB_WAIT;
              return (msleep(&sb->sb_cc, &sb->sb_mtx,
                  (sb->sb_flags & SB_NOINTR) ? PSOCK : PSOCK | PCATCH, "sbwait",
                  sb->sb_timeo));
      }
      

      【讨论】:

        猜你喜欢
        • 2017-09-01
        • 2017-06-22
        • 1970-01-01
        • 1970-01-01
        • 2013-07-22
        • 2012-10-23
        • 2023-03-10
        • 2016-12-18
        • 1970-01-01
        相关资源
        最近更新 更多