スポンサーリンク

top(1) で kqread というステータスを目にすることがあります。

たとえば、これ。
  PID USERNAME    THR PRI NICE   SIZE    RES STATE    TIME   WCPU COMMAND
  744 squid         1   4    0  7868K  3384K kqread  18:20  0.00% squid

"kqread" は
/usr/src/sys/kern/kern_event.c
の kqueue_scan で msleep(9) を呼び出したときに指定されます。

/usr/src/sys/kern/kern_event.c
http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/kern/kern_event.c?f=u&only_with_tag=&logsort=date
/*
 * Scan, Update kn_data (if not ONESHOT), and copyout triggered events.
 * We treat KN_MARKER knotes as if they are INFLUX.
 */
static int
kqueue_scan(struct kqueue *kq, int maxevents, struct kevent_copyops *k_ops,
	const struct timespec *tsp, struct kevent *keva, struct thread *td)
{
	struct kevent *kevp;
	struct timeval atv, rtv, ttv;
	struct knote *kn, *marker;
	int count, timeout, nkev, error;
	int haskqglobal;

	省略

start:
        kevp = keva;
        if (kq->kq_count == 0) {
                if (timeout < 0) {
                        error = EWOULDBLOCK;
                } else {
                        kq->kq_state |= KQ_SLEEP;
                        error = msleep(kq, &kq->kq_lock, PSOCK | PCATCH,
                            "kqread", timeout);
                }
                if (error == 0)
                        goto retry;
                /* don't restart after signals... */
                if (error == ERESTART)
                        error = EINTR;
                else if (error == EWOULDBLOCK)
                        error = 0;
                goto done;
        }

	...

msleep(9) は event を待つための関数で、 tsleep(9) のバリエーションになります。
tsleep() や wakeup() はイベントベースのプロセスブロッキングをハンドルします。
プロセスが外部イベントを待たなければいけないときに、 tsleep() によって sleep します。

つまり、 kqread は、外部からのイベントを待っている状態、ということです。
参照しているページ (サイト内): [2007-07-14-1] [2007-05-14-3]

スポンサーリンク
スポンサーリンク
 
いつもシェア、ありがとうございます!


もっと情報を探しませんか?

関連記事

最近の記事

人気のページ

スポンサーリンク
 

過去ログ

2020 : 01 02 03 04 05 06 07 08 09 10 11 12
2019 : 01 02 03 04 05 06 07 08 09 10 11 12
2018 : 01 02 03 04 05 06 07 08 09 10 11 12
2017 : 01 02 03 04 05 06 07 08 09 10 11 12
2016 : 01 02 03 04 05 06 07 08 09 10 11 12
2015 : 01 02 03 04 05 06 07 08 09 10 11 12
2014 : 01 02 03 04 05 06 07 08 09 10 11 12
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12

サイト

Vim入門

C言語入門

C++入門

JavaScript/Node.js入門

Python入門

FreeBSD入門

Ubuntu入門

セキュリティ入門

パソコン自作入門

ブログ

トップ


プライバシーポリシー