1. 11 12月, 2006 1 次提交
    • A
      [PATCH] io-accounting: core statistics · 7c3ab738
      Andrew Morton 提交于
      The present per-task IO accounting isn't very useful.  It simply counts the
      number of bytes passed into read() and write().  So if a process reads 1MB
      from an already-cached file, it is accused of having performed 1MB of I/O,
      which is wrong.
      
      (David Wright had some comments on the applicability of the present logical IO accounting:
      
        For billing purposes it is useless but for workload analysis it is very
        useful
      
        read_bytes/read_calls  average read request size
        write_bytes/write_calls average write request size
      
        read_bytes/read_blocks ie logical/physical can indicate hit rate or thrashing
        write_bytes/write_blocks  ie logical/physical  guess since pdflush writes can
                                                      be missed
      
        I often look for logical larger than physical to see filesystem cache
        problems.  And the bytes/cpusec can help find applications that are
        dominating the cache and causing slow interactive response from page cache
        contention.
      
        I want to find the IO intensive applications and make sure they are doing
        efficient IO.  Thus the acctcms(sysV) or csacms command would give the high
        IO commands).
      
      This patchset adds new accounting which tries to be more accurate.  We account
      for three things:
      
      reads:
      
        attempt to count the number of bytes which this process really did cause
        to be fetched from the storage layer.  Done at the submit_bio() level, so it
        is accurate for block-backed filesystems.  I also attempt to wire up NFS and
        CIFS.
      
      writes:
      
        attempt to count the number of bytes which this process caused to be sent
        to the storage layer.  This is done at page-dirtying time.
      
        The big inaccuracy here is truncate.  If a process writes 1MB to a file
        and then deletes the file, it will in fact perform no writeout.  But it will
        have been accounted as having caused 1MB of write.
      
        So...
      
      cancelled_writes:
      
        account the number of bytes which this process caused to not happen, by
        truncating pagecache.
      
        We _could_ just subtract this from the process's `write' accounting.  But
        that means that some processes would be reported to have done negative
        amounts of write IO, which is silly.
      
        So we just report the raw number and punt this decision up to userspace.
      
      Now, we _could_ account for writes at the physical I/O level.  But
      
      - This would require that we track memory-dirtying tasks at the per-page
        level (would require a new pointer in struct page).
      
      - It would mean that IO statistics for a process are usually only available
        long after that process has exitted.  Which means that we probably cannot
        communicate this info via taskstats.
      
      This patch:
      
      Wire up the kernel-private data structures and the accessor functions to
      manipulate them.
      
      Cc: Jay Lan <jlan@sgi.com>
      Cc: Shailabh Nagar <nagar@watson.ibm.com>
      Cc: Balbir Singh <balbir@in.ibm.com>
      Cc: Chris Sturtivant <csturtiv@sgi.com>
      Cc: Tony Ernst <tee@sgi.com>
      Cc: Guillaume Thouvenin <guillaume.thouvenin@bull.net>
      Cc: David Wright <daw@sgi.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      7c3ab738
  2. 02 12月, 2006 1 次提交
  3. 09 11月, 2006 1 次提交
    • E
      [PATCH] sysctl: Undeprecate sys_sysctl · 13bb7e37
      Eric W. Biederman 提交于
      The basic issue is that despite have been deprecated and warned about as a
      very bad thing in the man pages since its inception there are a few real
      users of sys_sysctl.  It was my assumption that because sysctl had been
      deprecated for all of 2.6 there would be no user space users by this point,
      so I initially gave sys_sysctl a very short deprecation period.
      
      Now that I know there are a few real users the only sane way to proceed
      with deprecation is to push the time limit out to a year or two work and
      work with distributions that have big testing pools like fedora core to
      find these last remaining users.
      
      Which means that the sys_sysctl interface needs to be maintained in the
      meantime.
      
      Since I have provided a technical measure that allows us to add new sysctl
      entries without reserving more binary numbers I believe that is enough to
      fix the sys_sysctl binary interface maintenance problems, because there is
      no longer a need to change the binary interface at all.
      
      Since the sys_sysctl implementation needs to stay around for a while and
      the worst of the maintenance issues that caused us to occasionally break
      the ABI have been addressed I don't see any advantage in continuing with
      the removal of sys_sysctl.
      
      So instead of merely increasing the deprecation period this patch removes
      the deprecation of sys_sysctl and modifies the kernel to compile the code
      in by default.
      
      With committing to maintain sys_sysctl we get all of the advantages of a
      fast interface for anything that needs it.  Currently sys_sysctl is about
      5x faster than /proc/sys, for the same string data.
      Signed-off-by: NEric W. Biederman <ebiederm@xmission.com>
      Acked-by: NAlan Cox <alan@redhat.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      13bb7e37
  4. 21 10月, 2006 1 次提交
    • P
      [PATCH] uml: use DEFCONFIG_LIST to avoid reading host's config · b2670eac
      Paolo 'Blaisorblade' Giarrusso 提交于
      This should make sure that, for UML, host's configuration files are not
      considered, which avoids various pains to the user.  Our dependency are such
      that the obtained Kconfig will be valid and will lead to successful
      compilation - however they cannot prevent an user from disabling any boot
      device, and if an option is not set in the read .config (say
      /boot/config-XXX), with make menuconfig ARCH=um, it is not set.  This always
      disables UBD and all console I/O channels, which leads to non-working UML
      kernels, so this bothers users - especially now, since it will happen on
      almost every machine (/boot/config-`uname -r` exists almost on every machine).
       It can be workarounded with make defconfig ARCH=um, but it is non-obvious and
      can be avoided, so please _do_ merge this patch.
      
      Given the existence of options, it could be interesting to implement
      (additionally) "option required" - with it, Kconfig will refuse reading a
      .config file (from wherever it comes) if the given option is not set.  With
      this, one could mark with it the option characteristic of the given
      architecture (it was an old proposal of Roman Zippel, when I pointed out our
      problem):
      
      config UML
      	option required
      	default y
      
      However this should be further discussed:
      *) for x86, it must support constructs like:
      
      ==arch/i386/Kconfig==
      config 64BIT
      	option required
      	default n
      where Kconfig must require that CONFIG_64BIT is disabled or not present in the
      read .config.
      
      *) do we want to do such checks only for the starting defconfig or also for
         .config? Which leads to:
      *) I may want to port a x86_64 .config to x86 and viceversa, or even among more
         different archs. Should that be allowed, and in which measure (the user may
         force skipping the check for a .config or it is only given a warning by
         default)?
      
      Cc: Roman Zippel <zippel@linux-m68k.org>
      Cc: <kbuild-devel@lists.sourceforge.net>
      Signed-off-by: NPaolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
      Cc: Jeff Dike <jdike@addtoit.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      b2670eac
  5. 02 10月, 2006 2 次提交
  6. 01 10月, 2006 4 次提交
    • J
      [PATCH] csa: Extended system accounting over taskstats · 9acc1853
      Jay Lan 提交于
      Add extended system accounting handling over taskstats interface.  A
      CONFIG_TASK_XACCT flag is created to enable the extended accounting code.
      Signed-off-by: NJay Lan <jlan@sgi.com>
      Cc: Shailabh Nagar <nagar@watson.ibm.com>
      Cc: Balbir Singh <balbir@in.ibm.com>
      Cc: Jes Sorensen <jes@sgi.com>
      Cc: Chris Sturtivant <csturtiv@sgi.com>
      Cc: Tony Ernst <tee@sgi.com>
      Cc: Guillaume Thouvenin <guillaume.thouvenin@bull.net>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      9acc1853
    • R
      [PATCH] fix EMBEDDED + SYSCTL menu · 0847062a
      Randy Dunlap 提交于
      SYSCTL should still depend on EMBEDDED.  This unbreaks the EMBEDDED menu
      (from the recent SYSCTL_SYCALL menu option patch).
      
      Fix typos in new SYSCTL_SYSCALL menu.
      Signed-off-by: NRandy Dunlap <rdunlap@xenotime.net>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      0847062a
    • R
      [PATCH] allow /proc/config.gz to be built as a module · f2443ab6
      Ross Biro 提交于
      The driver for /proc/config.gz consumes rather a lot of memory and it is in
      fact possible to build it as a module.
      
      In some ways this is a bit risky, because the .config which is used for
      compiling kernel/configs.c isn't necessarily the same as the .config which was
      used to build vmlinux.
      
      But OTOH the potential memory savings are decent, and it'd be fairly dumb to
      build your configs.o with a different .config.
      Signed-off-by: NAndrew Morton <akpm@google.com>
      Cc: "Randy.Dunlap" <rdunlap@xenotime.net>
      Cc: Sam Ravnborg <sam@ravnborg.org>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      f2443ab6
    • D
      [PATCH] BLOCK: Make it possible to disable the block layer [try #6] · 9361401e
      David Howells 提交于
      Make it possible to disable the block layer.  Not all embedded devices require
      it, some can make do with just JFFS2, NFS, ramfs, etc - none of which require
      the block layer to be present.
      
      This patch does the following:
      
       (*) Introduces CONFIG_BLOCK to disable the block layer, buffering and blockdev
           support.
      
       (*) Adds dependencies on CONFIG_BLOCK to any configuration item that controls
           an item that uses the block layer.  This includes:
      
           (*) Block I/O tracing.
      
           (*) Disk partition code.
      
           (*) All filesystems that are block based, eg: Ext3, ReiserFS, ISOFS.
      
           (*) The SCSI layer.  As far as I can tell, even SCSI chardevs use the
           	 block layer to do scheduling.  Some drivers that use SCSI facilities -
           	 such as USB storage - end up disabled indirectly from this.
      
           (*) Various block-based device drivers, such as IDE and the old CDROM
           	 drivers.
      
           (*) MTD blockdev handling and FTL.
      
           (*) JFFS - which uses set_bdev_super(), something it could avoid doing by
           	 taking a leaf out of JFFS2's book.
      
       (*) Makes most of the contents of linux/blkdev.h, linux/buffer_head.h and
           linux/elevator.h contingent on CONFIG_BLOCK being set.  sector_div() is,
           however, still used in places, and so is still available.
      
       (*) Also made contingent are the contents of linux/mpage.h, linux/genhd.h and
           parts of linux/fs.h.
      
       (*) Makes a number of files in fs/ contingent on CONFIG_BLOCK.
      
       (*) Makes mm/bounce.c (bounce buffering) contingent on CONFIG_BLOCK.
      
       (*) set_page_dirty() doesn't call __set_page_dirty_buffers() if CONFIG_BLOCK
           is not enabled.
      
       (*) fs/no-block.c is created to hold out-of-line stubs and things that are
           required when CONFIG_BLOCK is not set:
      
           (*) Default blockdev file operations (to give error ENODEV on opening).
      
       (*) Makes some /proc changes:
      
           (*) /proc/devices does not list any blockdevs.
      
           (*) /proc/diskstats and /proc/partitions are contingent on CONFIG_BLOCK.
      
       (*) Makes some compat ioctl handling contingent on CONFIG_BLOCK.
      
       (*) If CONFIG_BLOCK is not defined, makes sys_quotactl() return -ENODEV if
           given command other than Q_SYNC or if a special device is specified.
      
       (*) In init/do_mounts.c, no reference is made to the blockdev routines if
           CONFIG_BLOCK is not defined.  This does not prohibit NFS roots or JFFS2.
      
       (*) The bdflush, ioprio_set and ioprio_get syscalls can now be absent (return
           error ENOSYS by way of cond_syscall if so).
      
       (*) The seclvl_bd_claim() and seclvl_bd_release() security calls do nothing if
           CONFIG_BLOCK is not set, since they can't then happen.
      Signed-Off-By: NDavid Howells <dhowells@redhat.com>
      Signed-off-by: NJens Axboe <axboe@kernel.dk>
      9361401e
  7. 27 9月, 2006 1 次提交
  8. 17 9月, 2006 1 次提交
  9. 15 7月, 2006 3 次提交
  10. 01 7月, 2006 2 次提交
  11. 28 6月, 2006 1 次提交
  12. 27 6月, 2006 1 次提交
  13. 26 6月, 2006 1 次提交
  14. 20 6月, 2006 1 次提交
    • A
      [PATCH] audit: path-based rules · f368c07d
      Amy Griffis 提交于
      In this implementation, audit registers inotify watches on the parent
      directories of paths specified in audit rules.  When audit's inotify
      event handler is called, it updates any affected rules based on the
      filesystem event.  If the parent directory is renamed, removed, or its
      filesystem is unmounted, audit removes all rules referencing that
      inotify watch.
      
      To keep things simple, this implementation limits location-based
      auditing to the directory entries in an existing directory.  Given
      a path-based rule for /foo/bar/passwd, the following table applies:
      
          passwd modified -- audit event logged
          passwd replaced -- audit event logged, rules list updated
          bar renamed     -- rule removed
          foo renamed     -- untracked, meaning that the rule now applies to
      		       the new location
      
      Audit users typically want to have many rules referencing filesystem
      objects, which can significantly impact filtering performance.  This
      patch also adds an inode-number-based rule hash to mitigate this
      situation.
      
      The patch is relative to the audit git tree:
      http://kernel.org/git/?p=linux/kernel/git/viro/audit-current.git;a=summary
      and uses the inotify kernel API:
      http://lkml.org/lkml/2006/6/1/145Signed-off-by: NAmy Griffis <amy.griffis@hp.com>
      Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
      f368c07d
  15. 09 6月, 2006 1 次提交
  16. 09 5月, 2006 1 次提交
  17. 19 4月, 2006 1 次提交
  18. 11 4月, 2006 1 次提交
  19. 26 3月, 2006 1 次提交
  20. 24 3月, 2006 1 次提交
  21. 13 3月, 2006 1 次提交
    • A
      Kconfig: remove the CONFIG_CC_ALIGN_* options · 8cab77a2
      Adrian Bunk 提交于
      I don't see any use case for the CONFIG_CC_ALIGN_* options:
      - they are only available if EMBEDDED
      - people using EMBEDDED will most likely also enable
        CC_OPTIMIZE_FOR_SIZE
      - the default for -Os is to disable alignment
      
      In case someone is doing performance comparisons and discovers that the
      default settings gcc chooses aren't good, the only sane thing is to discuss
      whether it makes sense to change this, not through offering options to change
      this locally.
      Signed-off-by: NAdrian Bunk <bunk@stusta.de>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NSam Ravnborg <sam@ravnborg.org>
      8cab77a2
  22. 08 2月, 2006 1 次提交
  23. 04 2月, 2006 1 次提交
  24. 17 1月, 2006 1 次提交
  25. 15 1月, 2006 1 次提交
  26. 12 1月, 2006 1 次提交
  27. 11 1月, 2006 1 次提交
    • A
      [PATCH] "tiny-make-id16-support-optional" fixes · 2308acca
      Adrian Bunk 提交于
      It seems the "make UID16 support optional" patch was checked when it
      edited the -tiny tree some time ago, but it wasn't checked whether it
      still matches the current situation when it was submitted for inclusion
      in -mm. This patch fixes the following bugs:
      - ARCH_S390X does no longer exist, nowadays this has to be expressed
        through (S390 && 64BIT)
      - in five architecture specific Kconfig files the UID16 options
        weren't removed
      
      Additionally, it changes the fragile negative dependencies of UID16 to
      positive dependencies (new architectures are more likely to not require
      UID16 support).
      Signed-off-by: NAdrian Bunk <bunk@stusta.de>
      Acked-by: NMatt Mackall <mpm@selenic.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      2308acca
  28. 09 1月, 2006 5 次提交
    • M
      [PATCH] Make vm86 support optional · 64ca9004
      Matt Mackall 提交于
      This adds an option to remove vm86 support under CONFIG_EMBEDDED.  Saves
      about 5k.
      
      This version eliminates most of the #ifdefs of the previous version and
      instead uses function stubs in vm86.h.  Also, release_vm86_irqs is moved
      from asm-i386/irq.h to a more appropriate home in vm86.h so that the stubs
      can live together.
      
      $ size vmlinux-baseline vmlinux-novm86
         text    data     bss     dec     hex filename
      2920821  523232  190652 3634705  377611 vmlinux-baseline
      2916268  523100  190492 3629860  376324 vmlinux-novm86
      Signed-off-by: NMatt Mackall <mpm@selenic.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      64ca9004
    • M
      [PATCH] tiny: Configure ELF core dump support · 708e9a79
      Matt Mackall 提交于
      configurable support for ELF core dumps
      
         text    data     bss     dec     hex filename
      3330172  529036  190556 4049764  3dcb64 vmlinux-baseline
      3325552  528912  190556 4045020  3db8dc vmlinux-no-elf
      
      add/remove: 0/8 grow/shrink: 0/0 up/down: 0/-4424 (-4424)
      function                                     old     new   delta
      fill_note                                     32       -     -32
      maydump                                       58       -     -58
      dump_seek                                     67       -     -67
      writenote                                    180       -    -180
      elf_dump_thread_status                       274       -    -274
      fill_psinfo                                  308       -    -308
      fill_prstatus                                466       -    -466
      elf_core_dump                               3039       -   -3039
      Signed-off-by: NMatt Mackall <mpm@selenic.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      708e9a79
    • M
      [PATCH] tiny: Make *[ug]id16 support optional · e585e470
      Matt Mackall 提交于
      Configurable 16-bit UID and friends support
      
      This allows turning off the legacy 16 bit UID interfaces on embedded platforms.
      
         text    data     bss     dec     hex filename
      3330172  529036  190556 4049764  3dcb64 vmlinux-baseline
      3328268  529040  190556 4047864  3dc3f8 vmlinux
      
      From: Adrian Bunk <bunk@stusta.de>
      
          UID16 was accidentially disabled for !EMBEDDED.
      Signed-off-by: NMatt Mackall <mpm@selenic.com>
      Signed-off-by: NAdrian Bunk <bunk@stusta.de>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      e585e470
    • M
      [PATCH] tiny: Make x86 doublefault handling optional · 22c4e308
      Matt Mackall 提交于
      This adds configurable support for doublefault reporting on x86
      
      add/remove: 0/3 grow/shrink: 0/1 up/down: 0/-13048 (-13048)
      function                                     old     new   delta
      cpu_init                                     846     786     -60
      doublefault_fn                               188       -    -188
      doublefault_stack                           4096       -   -4096
      doublefault_tss                             8704       -   -8704
      Signed-off-by: NMatt Mackall <mpm@selenic.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      22c4e308
    • M
      [PATCH] slob: introduce the SLOB allocator · 10cef602
      Matt Mackall 提交于
      configurable replacement for slab allocator
      
      This adds a CONFIG_SLAB option under CONFIG_EMBEDDED.  When CONFIG_SLAB is
      disabled, the kernel falls back to using the 'SLOB' allocator.
      
      SLOB is a traditional K&R/UNIX allocator with a SLAB emulation layer,
      similar to the original Linux kmalloc allocator that SLAB replaced.  It's
      signicantly smaller code and is more memory efficient.  But like all
      similar allocators, it scales poorly and suffers from fragmentation more
      than SLAB, so it's only appropriate for small systems.
      
      It's been tested extensively in the Linux-tiny tree.  I've also
      stress-tested it with make -j 8 compiles on a 3G SMP+PREEMPT box (not
      recommended).
      
      Here's a comparison for otherwise identical builds, showing SLOB saving
      nearly half a megabyte of RAM:
      
      $ size vmlinux*
         text    data     bss     dec     hex filename
      3336372  529360  190812 4056544  3de5e0 vmlinux-slab
      3323208  527948  190684 4041840  3dac70 vmlinux-slob
      
      $ size mm/{slab,slob}.o
         text    data     bss     dec     hex filename
        13221     752      48   14021    36c5 mm/slab.o
         1896      52       8    1956     7a4 mm/slob.o
      
      /proc/meminfo:
                        SLAB          SLOB      delta
      MemTotal:        27964 kB      27980 kB     +16 kB
      MemFree:         24596 kB      25092 kB    +496 kB
      Buffers:            36 kB         36 kB       0 kB
      Cached:           1188 kB       1188 kB       0 kB
      SwapCached:          0 kB          0 kB       0 kB
      Active:            608 kB        600 kB      -8 kB
      Inactive:          808 kB        812 kB      +4 kB
      HighTotal:           0 kB          0 kB       0 kB
      HighFree:            0 kB          0 kB       0 kB
      LowTotal:        27964 kB      27980 kB     +16 kB
      LowFree:         24596 kB      25092 kB    +496 kB
      SwapTotal:           0 kB          0 kB       0 kB
      SwapFree:            0 kB          0 kB       0 kB
      Dirty:               4 kB         12 kB      +8 kB
      Writeback:           0 kB          0 kB       0 kB
      Mapped:            560 kB        556 kB      -4 kB
      Slab:             1756 kB          0 kB   -1756 kB
      CommitLimit:     13980 kB      13988 kB      +8 kB
      Committed_AS:     4208 kB       4208 kB       0 kB
      PageTables:         28 kB         28 kB       0 kB
      VmallocTotal:  1007312 kB    1007312 kB       0 kB
      VmallocUsed:        48 kB         48 kB       0 kB
      VmallocChunk:  1007264 kB    1007264 kB       0 kB
      
      (this work has been sponsored in part by CELF)
      
      From: Ingo Molnar <mingo@elte.hu>
      
         Fix 32-bitness bugs in mm/slob.c.
      Signed-off-by: NMatt Mackall <mpm@selenic.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      10cef602
  29. 07 1月, 2006 1 次提交