diff options
author | Thomas Schwinge <thomas@codesourcery.com> | 2016-05-18 12:53:00 +0200 |
---|---|---|
committer | Thomas Schwinge <thomas@codesourcery.com> | 2016-05-18 12:53:00 +0200 |
commit | a443afde27a74f8d8bc13e1184ecf16d513d6147 (patch) | |
tree | 706d01d5ec6581778dfa0e56fe6085fabdb60935 | |
parent | 2781d32ebd97fe0c93cb1b428c8b85ae0f23515e (diff) | |
parent | 60f15d9a60e7e0754c30bd8ec458982cd35540d3 (diff) |
Merge remote-tracking branch 'savannah/master'
Conflicts:
open_issues/profiling.mdwn
-rw-r--r-- | community/gsoc.mdwn | 6 | ||||
-rw-r--r-- | contributing.mdwn | 6 | ||||
-rw-r--r-- | hurd/porting/guidelines.mdwn | 12 | ||||
-rw-r--r-- | hurd/running/debian/qemu_image.mdwn | 2 | ||||
-rw-r--r-- | hurd/running/qemu.mdwn | 28 | ||||
-rw-r--r-- | microkernel/mach/gnumach.mdwn | 1 | ||||
-rw-r--r-- | microkernel/mach/gnumach/profiling.mdwn | 30 | ||||
-rw-r--r-- | news/2015-10-31-releases.mdwn | 4 | ||||
-rw-r--r-- | open_issues/64-bit_port.mdwn | 5 | ||||
-rw-r--r-- | open_issues/problematic_packages.mdwn | 5 | ||||
-rw-r--r-- | open_issues/profiling.mdwn | 2 | ||||
-rw-r--r-- | sidebar.mdwn | 8 |
12 files changed, 63 insertions, 46 deletions
diff --git a/community/gsoc.mdwn b/community/gsoc.mdwn index 1e2d813d..b5df8ef2 100644 --- a/community/gsoc.mdwn +++ b/community/gsoc.mdwn @@ -20,25 +20,23 @@ We're in! The GNU Hurd project is again participating in the [Google Summer of Code](https://summerofcode.withgoogle.com/) under the [GNU umbrella](http://www.gnu.org/software/soc-projects/). -<!-- This year's *student application period* is over. Thanks for sending in your applications! We're now reviewing and discussing these, so please pay attention to any questions posted on your proposal's page. The Google site's notification system should be sending out emails, too. ---> Per the [program timeline](https://summerofcode.withgoogle.com/how-it-works/), <!-- we are awaiting for the approval of GNU as a mentoring organization. --> +<!-- from 2016-03-14 to 2016-03-25, it's the *student application period*, which is plenty of time for preparing and discussing your applications -- but please don't wait to the last minute! -<!-- +--> we're now waiting for Google to announce the number of slots that the whole GNU project gets, and we'll be discussing with our GNU peers about how to split these up among all the GNU subprojects. ---> As we only have finite resources (meaning that we won't be able to accept all GNU Hurd applications even if we wanted to), we will eventually need to make a diff --git a/contributing.mdwn b/contributing.mdwn index 95f4cb39..4674713e 100644 --- a/contributing.mdwn +++ b/contributing.mdwn @@ -95,10 +95,6 @@ with". file_get_fs_options and fsys_set_options RPCs. * Extend `device_read`/`device_write` into supporting > 2TiB disk sizes. * Make the Hurd [[hurd/console]]'s configuration use [[xkb layout/variant instead of keymap|hurd/console/discussion]]. -* Add a [[futex kernel trap|microkernel/mach/gnumach/interface#futex]] to GNU Mach. -This can be useful for nicer locking -primitives, including inter-process primitives. `vm_allocate` can be used as an -example in the `gnumach` source tree for how to add a kernel trap. [[!GNU_Savannah_task 6231]] * Add NX protection support to GNU Mach. * Write a partfs translator, to which one gives a disk image, and which exposes the partitions of the disk image, using parted, and @@ -115,6 +111,8 @@ lookups|hurd/interface/dir_lookup]] work. * Add a relatime or lazytime option to ext2fs. * Fix our [[open_issues/symlink_translator]]. * Fix chmod on fifos: mkfifo foo ; sudo chmod g+w foo +* Strengthen httpfs: it should append '/' to URL automatically, it should not fallback index.html itself, etc. probably a lot more small easy issues. +* Fix `O_NOATIME`, see <https://buildd.debian.org/status/fetch.php?pkg=borgbackup&arch=hurd-i386&ver=1.0.2-1&stamp=1460838100> <a name="porting"></a> ## Porting Packages diff --git a/hurd/porting/guidelines.mdwn b/hurd/porting/guidelines.mdwn index 66c6ae28..a76ffc8f 100644 --- a/hurd/porting/guidelines.mdwn +++ b/hurd/porting/guidelines.mdwn @@ -1,5 +1,5 @@ [[!meta copyright="Copyright © 2002, 2003, 2005, 2007, 2008, 2009, 2010, 2011, -2012, 2013, 2014 Free Software Foundation, Inc."]] +2012, 2013, 2014, 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 @@ -321,19 +321,19 @@ These are not POSIX, `sys/types.h` and `stdint.h` should be used instead. Not supported and actually very dangerous (permits userland to completely disable interruptions...). Replace with `ioperm(0, 65536, 1)`. -## <a name="iopl"> `semget`, `sem_open` </a> +## <a name="sem_open"> `semget`, `sem_open` </a> -Not implemented, will always fail. Use `sem_init()` instead if possible. +Not implemented yet, will always fail. Use `sem_init()` instead if possible. `sem_init` with pshared=1 is not available yet either. ## <a name="net/..."> `net/if_arp.h`, `net/ethernet.h`, etc. </a> Not implemented, not POSIX. Try to disable the feature in the package. -## <a name="parport"> <linux/parport.h> <linux/ppdev.h> </a> +## <a name="parport"> `linux/parport.h` `linux/ppdev.h` </a> There is no programming interface for the parallel port on GNU/Hurd yet. -## <a name="cdrom"> <linux/cdrom.h> </a> +## <a name="cdrom"> `linux/cdrom.h` </a> Use <sys/cdrom.h> instead. @@ -343,7 +343,7 @@ This is not actually standard; cfsetspeed, cfsetispeed, or cfsetospeed should be ## <a name="termios"> IUCLC </a> -IUCLC is a GNU extension. `#define _GNU_SOURCE' thus has to be used to get the definition (even if Linux unconditionally provides it, it should not). +IUCLC is a GNU extension. `#define _GNU_SOURCE` thus has to be used to get the definition (even if Linux unconditionally provides it, it should not). ## <a name="errno"> `errno` values </a> diff --git a/hurd/running/debian/qemu_image.mdwn b/hurd/running/debian/qemu_image.mdwn index 1f42507b..a17ff894 100644 --- a/hurd/running/debian/qemu_image.mdwn +++ b/hurd/running/debian/qemu_image.mdwn @@ -16,7 +16,7 @@ Usage: $ wget http://people.debian.org/~sthibault/hurd-i386/debian-hurd.img.tar.gz $ tar -xz < debian-hurd.img.tar.gz - $ kvm -m 512 -drive cache=writeback,file=$(echo debian-hurd-*.img) + $ kvm -m 1G -drive cache=writeback,file=$(echo debian-hurd-*.img) Please also read the README file: <http://people.debian.org/~sthibault/hurd-i386/README> diff --git a/hurd/running/qemu.mdwn b/hurd/running/qemu.mdwn index dfc9cdd2..ef89ec12 100644 --- a/hurd/running/qemu.mdwn +++ b/hurd/running/qemu.mdwn @@ -1,5 +1,5 @@ [[!meta copyright="Copyright © 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, -2013, 2014 Free Software Foundation, Inc."]] +2013, 2014, 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 @@ -32,7 +32,7 @@ Note that the following images are unofficial ones: they have been prepared by volunteers and may not have been tested extensively. * [Disk image](http://draketo.de/dateien/hurd/bab-hurd-qemu-2008-10-29.img.tar.bz2) - with a short intro on translators. Just start it with `qemu -m 512 + with a short intro on translators. Just start it with `qemu -m 1G -drive cache=writeback,file=disk_image.img`. It should work without any of the configuration below. If you want to know what you can do with it, please have a look at [[its_wikipage|hurd/running/qemu/babhurd_image]]. And when @@ -50,12 +50,6 @@ Also you can use QEMU to easily try one of the Instructions for creating a qemu image from the install CDs from debian installer can be found in the README alongside the d-i Hurd images: <http://people.debian.org/~sthibault/hurd-i386/installer/cdimage/> -## Old method - -1. First thing is to install [[/QEMU]]. -2. A [[grub]] boot disk for the floppy disk image needed for booting. The [0\.97 version](ftp://alpha.gnu.org/gnu/grub/grub-0.97-i386-pc.ext2fs) works fine. I downloaded it and renamed to `floppy.img`. Alternatively, the Debian grub-disk package (up till version 0.97-28) is fine as well. -3. You will need a [Debian/Hurd installation CD](http://www.debian.org/ports/hurd/hurd-cd). K16 works fine. - # KVM acceleration Check if your CPU supports kvm: @@ -117,11 +111,6 @@ IRC, freenode, #hurd, 2012-08-29: <gnu_srs> seems like kvm -h says: -no-kvm-irqchip and man kvm says: -machine kernel_irqchip=off -/!\ Note that there are known performance issues with KVM on Linux 2.6.39 -kernels, compared to 2.6.32: [[!debbug 634149]]. We're preparing on a change -on our side to work around this. - - # HAP/EPT/NPT acceleration Performance will be yet better if HAP (EPT or NPT) is available: @@ -139,7 +128,7 @@ First off you will need to create a disk image using `qemu-img`. I have set mine Next you will want to start up QEMU and begin the installation process. - $ qemu -m 512 -drive cache=writeback,file=hd0.img -cdrom debian-7.0-hurd-i386-NETINST-1.iso -net nic,model=rtl8139 -net user + $ qemu -m 1G -drive cache=writeback,file=hd0.img -cdrom debian-7.0-hurd-i386-NETINST-1.iso -net nic,model=rtl8139 -net user Now at his point do the regular install using `hd0` as your harddrive. Partition it and install the base system. @@ -187,7 +176,7 @@ Once you have finished installing the base system (might take some time) the sys Starting qemu/qemu-kvm: - $ kvm -m 512 -net nic -net user,hostfwd=tcp::5555-:22 -drive cache=writeback,file=hd0.img -vga vmware + $ kvm -m 1G -net nic -net user,hostfwd=tcp::5555-:22 -drive cache=writeback,file=hd0.img -vga vmware vmsvga_value_write: guest runs Linux. Note: See below on port forwarding in the networking section. @@ -301,8 +290,9 @@ If you want to connect from the host system to the Hurd system running in QEMU, <youpi> there's not much better to do than that <youpi> (patching resolv.conf inside the guest, or apply the ipv6 patch) +This is fixed in qemu 2.6 -## Port Forwarding in QEMU +## Port Forwarding in QEMU/KVM (In the following we assume we use kvm!) #### Logging in to Hurd from a terminal in your host system @@ -310,7 +300,7 @@ This is the recommended way to work with a Command Line Interface (CLI) since al a) with ssh (assuming you have installed openssh-server) - $ kvm -m 512 -net nic -net user,hostfwd=tcp::5555-:22 -drive cache=writeback,file=hd0.img & + $ kvm -m 1G -net nic -net user,hostfwd=tcp::5555-:22 -drive cache=writeback,file=hd0.img & Logging in to the running Hurd: @@ -327,7 +317,7 @@ Copying files: b) with telnet (assuming you have installed a telnet server, like telnetd) - $ kvm -m 512 -net nic -net user,hostfwd=tcp::5556-:23 -drive cache=writeback,file=hurd-install.qemu & + $ kvm -m 1G -net nic -net user,hostfwd=tcp::5556-:23 -drive cache=writeback,file=hurd-install.qemu & Logging in to the running Hurd: @@ -368,7 +358,7 @@ Now it is time to start-up your QEMU Hurd system and get networking going in the **Important:** Remember you may need to use the `-M isapc` or `-isa` flag if using an older version of the gnumach package. - $ qemu -m 512 -drive cache=writeback,file=hd0.img -cdrom debian-K9-hurd-i386-CD1.iso -fda floppy.img -boot a -net nic -net tap + $ qemu -m 1G -drive cache=writeback,file=hd0.img -cdrom debian-K9-hurd-i386-CD1.iso -fda floppy.img -boot a -net nic -net tap Once you have logged in as `root` run the `pfinet` translator with values that apply to your network. Think of your QEMU client as another computer in your network. 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..a15fab5e --- /dev/null +++ b/microkernel/mach/gnumach/profiling.mdwn @@ -0,0 +1,30 @@ +[[!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/news/2015-10-31-releases.mdwn b/news/2015-10-31-releases.mdwn index 57cd7ec7..a4404e7a 100644 --- a/news/2015-10-31-releases.mdwn +++ b/news/2015-10-31-releases.mdwn @@ -1,4 +1,4 @@ -[[!meta copyright="Copyright © 2015 Free Software Foundation, Inc."]] +[[!meta copyright="Copyright © 2015, 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 @@ -124,7 +124,7 @@ We're pleased to announce new releases! [[**GNU MIG**|microkernel/mach/mig/gnu_mig]] is the GNU distribution of the [[Mach 3.0 Interface Generator (MIG)|microkernel/mach/mig]]. This tool - translates [[Remore Procedure Call (RPC)|rpc]] definition files to C code, + translates [[Remote Procedure Call (RPC)|rpc]] definition files to C code, and is required to compile any packages that are receiving or invoking RPCs, such as GNU Mach, GNU Hurd, and the GNU C Library (glibc) when compiled for the Hurd. More detailed: diff --git a/open_issues/64-bit_port.mdwn b/open_issues/64-bit_port.mdwn index 04273630..74758085 100644 --- a/open_issues/64-bit_port.mdwn +++ b/open_issues/64-bit_port.mdwn @@ -1,5 +1,5 @@ -[[!meta copyright="Copyright © 2011, 2012, 2013, 2014 Free Software Foundation, -Inc."]] +[[!meta copyright="Copyright © 2011, 2012, 2013, 2014, 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 @@ -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 diff --git a/open_issues/problematic_packages.mdwn b/open_issues/problematic_packages.mdwn index 3e11c0e2..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 @@ -28,3 +29,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 diff --git a/open_issues/profiling.mdwn b/open_issues/profiling.mdwn index 13ac86eb..12690af2 100644 --- a/open_issues/profiling.mdwn +++ b/open_issues/profiling.mdwn @@ -19,6 +19,8 @@ done for [[performance analysis|performance]] reasons. * [[gprof]] + * [[profiling GNU Mach|microkernel/mach/gnumach/profiling]] + * [[glibc]]'s sotruss * [[ltrace]] diff --git a/sidebar.mdwn b/sidebar.mdwn index 57245da2..0cd1101d 100644 --- a/sidebar.mdwn +++ b/sidebar.mdwn @@ -11,14 +11,6 @@ License|/fdl]]."]]"""]] Welcome to... [[!img /logo/boxes-redrawn.png link=/logo]] ... the GNU Hurd! -[[!template id=highlight text="""**Breaking News** - ---- - -The **Google Summer of Code 2016** is on! If you're a student, consider -applying for a GNU Hurd project -- details to be found on our -[[community/GSoC]] and [[community/gsoc/project_ideas]] pages."""]] - --- * **[[Home|/index]]** |