Messages in this thread Patch in this message |  | | Date | Sat, 03 Nov 2007 11:24:44 -0600 | | From | Bob Gill <> | | 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@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
|  |