[<prev] [next>] [day] [month] [year] [list]
Message-ID: <472CAEDC.5000607@telusplanet.net>
Date: Sat, 03 Nov 2007 11:24:44 -0600
From: Bob Gill <gillb4@...usplanet.net>
To: linux-kernel@...r.kernel.org
Subject: High cpu load due to pdflush
Hi. My computer is constipated. The load average when idle never goes
below 100%. Top shows this:
top - 11:01:27 up 5 min, 2 users, load average: 2.63, 1.73, 0.76
Tasks: 91 total, 2 running, 89 sleeping, 0 stopped, 0 zombie
Cpu(s): 13.5%us, 4.4%sy, 1.6%ni, 9.9%id, 70.2%wa, 0.3%hi, 0.2%si,
0.0%st
Note that we are at 70% for the wait state, 9.9% idle. Now when I run
ps aux | grep pdflush | grep -v grep ...I get:
root 144 0.0 0.0 0 0 ? S 10:56 0:00 [pdflush]
root 145 0.0 0.0 0 0 ? D 10:56 0:00 [pdflush]
the second pdflush is dirty (and won't write). I haven't changed
anything in /proc/sys/vm and am running the 2.6.24-rc1-git12 kernel on
Ubuntu Gutsy. The original Gutsy kernel worked fine. The only way I
can get around the problem is to go into a terminal and run:
>while true
>do
>sync
>sleep 10
>done
...which will force writes and give me (from top)
top - 11:06:55 up 10 min, 3 users, load average: 0.42, 1.23, 0.85
Tasks: 93 total, 2 running, 91 sleeping, 0 stopped, 0 zombie
Cpu(s): 3.0%us, 0.9%sy, 0.0%ni, 95.6%id, 0.3%wa, 0.3%hi, 0.0%si,
0.0%st
(on the very same load as before and the load is still dropping).
The only real change I made to Ubuntu was in
/etc/init.d/mountdevsubfs.sh where I uncommented:
# Magic to make /proc/bus/usb work
#
mkdir -p /dev/bus/usb/.usbfs
domount usbfs "" /dev/bus/usb/.usbfs
-obusmode=0700,devmode=0600,listmode=0644
ln -s .usbfs/devices /dev/bus/usb/devices
mount --rbind /dev/bus/usb /proc/bus/usb
...so that usb would work with a custom kernel...
Oh, and btw, my cpu is an Intel P4.
Also, I applied the following patch and build/ran a kernel (but it did
not reduce the cpu load on my system):
>/> -------------------------- fs/jbd/transaction.c
-----------------------------/
>/> index cceaf57..d38e0d5 100644/
>/> @@ -55,7 +55,7 @@ get_transaction(journal_t *journal, transaction_t
*transaction)/
>/> spin_lock_init(&transaction->t_handle_lock);/
>/> /
>/> /* Set up the commit timer for the new transaction. *//
>/> - journal->j_commit_timer.expires =
round_jiffies(transaction->t_expires);/
>/> + journal->j_commit_timer.expires = transaction->t_expires;/
>/> add_timer(&journal->j_commit_timer);/
>/> /
>/> J_ASSERT(journal->j_running_transaction == NULL);
/Any ideas? Please mail me if you need more information.
Thanks in Advance,
Bob
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists