On Fri, Oct 15, 2004 at 01:09:01PM -0700, Sean Chittenden wrote: [snip] > > > > This ultimately depends on two things: how much time is spent copying > > buffers around in kernel memory, and how much advantage can be gained > > by freeing up the memory used by the backends to store the > > backend-local copies of the disk pages they use (and thus making that > > memory available to the kernel to use for additional disk buffering). > > Someone on IRC pointed me to some OSDL benchmarks, which broke down > where time is being spent. Want to know what the most expensive part > of PostgreSQL is? *drum roll* > > http://khack.osdl.org/stp/297960/profile/DBT_2_Profile-tick.sort > > 3967393 total 1.7735 > 2331284 default_idle 36426.3125 > 825716 do_sigaction 1290.1813 > 133126 __copy_from_user_ll 1040.0469 > 97780 __copy_to_user_ll 763.9062 > 43135 finish_task_switch 269.5938 > 30973 do_anonymous_page 62.4456 > 24175 scsi_request_fn 22.2197 > 23355 __do_softirq 121.6406 > 17039 __wake_up 133.1172 > 16527 __make_request 10.8730 > 9823 try_to_wake_up 13.6431 > 9525 generic_unplug_device 66.1458 > 8799 find_get_page 78.5625 > 7878 scsi_end_request 30.7734 > > Copying data to/from userspace and signal handling!!!! Let's hear it > for the need for mmap(2)!!! *crowd goes wild* > [snip]
I know where the do_sigaction is coming from in this particular case. Manfred Spraul tracked it to a pair of pgsignal calls in libpq. Commenting out those two calls out virtually eliminates do_sigaction from the kernel profile for this workload. I've lost track of the discussion over the past year, but I heard a rumor that it was finally addressed to some degree. I did understand it touched on a lot of other things, but can anyone summarize where that discussion has gone? Mark ---------------------------(end of broadcast)--------------------------- TIP 6: Have you searched our list archives? http://archives.postgresql.org