From b7a83ff33d2793bf0db12f9bf5f52a90acb1bf2b Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Sun, 3 Apr 2016 14:56:06 +0200 Subject: add pygobject --- open_issues/problematic_packages.mdwn | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'open_issues') diff --git a/open_issues/problematic_packages.mdwn b/open_issues/problematic_packages.mdwn index 3e11c0e2..7f80b88a 100644 --- a/open_issues/problematic_packages.mdwn +++ b/open_issues/problematic_packages.mdwn @@ -28,3 +28,7 @@ This page lists the few packages whose build makes the Debian buildd box crash a * ext2fs gets stuck * emacs24 + +* loops and eats memory + + * pygobject -- cgit v1.2.3 From f901b6bb3753be05a2c3121e03e3aece59ecfaa7 Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Tue, 5 Apr 2016 13:53:37 +0200 Subject: socket-wrapper also kills the session --- open_issues/problematic_packages.mdwn | 1 + 1 file changed, 1 insertion(+) (limited to 'open_issues') diff --git a/open_issues/problematic_packages.mdwn b/open_issues/problematic_packages.mdwn index 7f80b88a..7ce9c5c4 100644 --- a/open_issues/problematic_packages.mdwn +++ b/open_issues/problematic_packages.mdwn @@ -20,6 +20,7 @@ This page lists the few packages whose build makes the Debian buildd box crash a * ruby-hiredis * libxs * subversion testsuite + * socket-wrapper * breaks cron -- cgit v1.2.3 From 79586834089f2938b9e78dfb319d07edcad64ecd Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Wed, 20 Apr 2016 01:03:34 +0200 Subject: document how to profile the kernel --- microkernel/mach/gnumach.mdwn | 1 + microkernel/mach/gnumach/profiling.mdwn | 31 +++++++++++++++++++++++++++++++ open_issues/profiling.mdwn | 4 +--- 3 files changed, 33 insertions(+), 3 deletions(-) create mode 100644 microkernel/mach/gnumach/profiling.mdwn (limited to 'open_issues') diff --git a/microkernel/mach/gnumach.mdwn b/microkernel/mach/gnumach.mdwn index 88aa1432..ba970a03 100644 --- a/microkernel/mach/gnumach.mdwn +++ b/microkernel/mach/gnumach.mdwn @@ -79,6 +79,7 @@ GNU/Hurd. * [[Reference_Manual]] * [[Building]] * [[Debugging]] + * [[Profiling]] * [[Boot_Trace]] * [[Memory_Management]] * [[Continuation]]s diff --git a/microkernel/mach/gnumach/profiling.mdwn b/microkernel/mach/gnumach/profiling.mdwn new file mode 100644 index 00000000..5b3f5e0b --- /dev/null +++ b/microkernel/mach/gnumach/profiling.mdwn @@ -0,0 +1,31 @@ +[[!meta copyright="Copyright © 2016 +Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + +Here is some guide to profile the GNU Mach kernel uses for a userland process. + +[[!toc levels=2]] + +First, it needs to be enabled: since this will leak kernel addresses to userland, it is not enabled by default. Pass `--enable-kernelsample` to the `./configure` invocation, and rebuild the kernel. + +Then you need to get the start and end of the text portion of the kernel: + + nm gnumach | grep " _start$" + nm gnumach | grep " etext$" + +And you need to patch glibc to use these start and end instead of the userland starts and ends: in `glibc/csu/gmon-start.c`, in the `__monstartup` call, replace `TEXT_START` and `&etext` with the start and end addresses obtained above. Rebuild libc (`make lib` is enough). Install `csu/gcrt[01].o` in `/usr/lib/i386-gnu/`. + +Now, you can rebuild your application with `-pg`, run it (for translators, use `settrans -a`, work with it, and use `settrans -fga` to terminate it nicely), you will get a `gmon.out` file. Normally you would just run `gprof application` to get the profiling, but here we need to get symbols from the kernel: + + nm -n gnumach > /tmp/list + +and then we can run `gprof -S /tmp/list application`, and the kernel profiling will show up. + +You will probably notice that `spl0` will show up a lot, more precisely the `sti` instruction. This is because all the kernel code running with interrupts disabled can't be profiled, and will be accounted for on that instruction (which triggers the profiling interrupts which should have happened while the interrupts were disabled). diff --git a/open_issues/profiling.mdwn b/open_issues/profiling.mdwn index e7dde903..57e3bedf 100644 --- a/open_issues/profiling.mdwn +++ b/open_issues/profiling.mdwn @@ -18,9 +18,7 @@ done for [[performance analysis|performance]] reasons. * [[hurd/debugging/rpctrace]] * [[gprof]] - - Should be working, but some issues have been reported, regarding GCC spec - files. Should be possible to fix (if not yet done) easily. + * [[profiling GNU Mach|microkernel/mach/gnumach/profiling]] * [[glibc]]'s sotruss -- cgit v1.2.3 From 60f15d9a60e7e0754c30bd8ec458982cd35540d3 Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Wed, 4 May 2016 16:07:22 +0200 Subject: reference the mailing list thread --- open_issues/64-bit_port.mdwn | 1 + 1 file changed, 1 insertion(+) (limited to 'open_issues') diff --git a/open_issues/64-bit_port.mdwn b/open_issues/64-bit_port.mdwn index 04273630..651b5533 100644 --- a/open_issues/64-bit_port.mdwn +++ b/open_issues/64-bit_port.mdwn @@ -14,6 +14,7 @@ License|/fdl]]."]]"""]] There is a `master-x86_64` GNU Mach branch. As of 2012-11-20, it only supports the [[microkernel/mach/gnumach/ports/Xen]] platform. +See http://lists.gnu.org/archive/html/bug-hurd/2012-04/msg00000.html # IRC, freenode, #hurd, 2011-10-16 -- cgit v1.2.3