High cpu load due to pdflush

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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 [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux