This may be a silly question, but have you tried setting flush_timeout() to some large value so that messages are queued? Or is this not the behavior you seek? It seems fairly obvious to me that if you have anything writing to syslog at any time, and those messages end up in a file, that the kernel is going to spin up the disks and write out the dirty pages. The only way I can imagine to avoid this would be to queue the messages within syslog-ng (which won't cause any disk-backed pages in memory to become dirty) and only write them out at wide enough intervals that the kernel sees enough inactivity to spin down the disks. Paul Krizak 7171 Southwest Pkwy MS B200.3A MTS Systems Engineer Austin, TX 78735 Advanced Micro Devices Desk: (512) 602-8775 Linux/Unix Systems Engineering Cell: (512) 791-0686 Global IT Infrastructure Fax: (512) 602-0468 On 07/11/2011 09:58 AM, Lars Stokholm wrote:
Hello
On my laptop I run Arch Linux with syslog-ng and cronie (cron) among other programs of course.
I'm trying to get my harddrive to spin down automatically once in a while (using hdparm).
Me and a lot of other people both in the Arch and Ubuntu community are having our attempts to do this ruined, by what first seemed to be the EXT4 journalling block device (jbd2).
After long discussions and finally a bug report (see at the bottom of this mail), I think I've boiled my troubles down to be mostly about syslog-ng (and possibly cronie - but I don't think so).
No matter what I try I can't seem to get syslog-ng to stop "waking up my disks" (at least that's what kernel tracing tells me). Killing the crond process almost totally stops these syslog-ng writes to the disk. Unfortunately I've been unable to configure my way out of it using syslog-ng.conf. So my harddrive won't stay spinned down - not even for a minute.
This is what tracing the journalling gives me (see the kernel bug report below for an explanaition): http://pastebin.com/raw.php?i=J6BtGVrz
As you can probably see, syslog-ng writes every minute at least. I guess that's because my user crontab has a command that gets run every minute. What I don't get is why syslog-ng writes to the disk, even though I'm telling it not to log crond's output.
Here is my syslog-ng.conf - as you can see I tried to output the crond messages to /dev/null. I guess it works, because there are no mentions of crond anywhere in /var/log anymore. http://pastebin.com/raw.php?i=H02KKWPV
Here are the discussions and the bug report I mentioned: https://bbs.archlinux.org/viewtopic.php?id=113516 https://bugs.launchpad.net/ubuntu/+source/linux/+bug/607560 https://bugzilla.kernel.org/show_bug.cgi?id=39072
I don't know if syslog-ng is causing trouble for only me, but it seems unlikely.
Regards, Lars