1. 09 Dec, 2016 1 commit
    • Pádraig Brady's avatar
      rate limit calls to posix_fadvise() · dacd2967
      Pádraig Brady authored
      There can be a large kernel overhead involved in POSIX_FADV_DONTNEED.
      There is no point in calling this per item logged, so rate limit
      to at most once per 2MiB written.
      
      With a simple test program that logs 100K items at WARNING level:
      
      Before:
      
        $ time strace -c -e fadvise64 log.test \
          -log_dir=/dev/shm -logtofiles=true -logtostderr=false
        % time     seconds  usecs/call     calls    errors syscall
        ------ ----------- ----------- --------- --------- ----------------
        100.00   12.522509         125     99957           fadvise64
        ------ ----------- ----------- --------- --------- ----------------
        real    0m52.671s
        user    0m2.194s
        sys     0m44.022s
      
      After:
      
        $ time strace -c -e fadvise64 log.test \
          -log_dir=/dev/shm -logtofiles=true -logtostderr=false
      
        % time     seconds  usecs/call     calls    errors syscall
        ------ ----------- ----------- --------- --------- ----------------
        100.00    0.000759         152         5           fadvise64
        ------ ----------- ----------- --------- --------- ----------------
        real    0m4.206s
        user    0m1.436s
        sys     0m3.153s
      
      Fixes issue #84
      dacd2967
  2. 20 Oct, 2016 1 commit
  3. 19 Oct, 2016 11 commits
  4. 07 Oct, 2016 2 commits
  5. 03 Oct, 2016 1 commit
  6. 11 Sep, 2016 1 commit
  7. 14 Jul, 2016 2 commits
  8. 23 Jun, 2016 2 commits
    • Peter Collingbourne's avatar
      Fix autotools build. · 8e98eb2a
      Peter Collingbourne authored
      It looks like commit 3c49b932 modified the auto-generated file src/config.h.in
      to add a definition of macro GOOGLE_GLOG_DLL_DECL. One of the autotools
      reverts this change upon running "make", causing the build to fail when a
      source file includes demangle.h.
      
      To fix the problem, revert the change to src/config.h.in and include
      glog/logging.h from demangle.h which provides a definition of that macro.
      8e98eb2a
    • Peter Collingbourne's avatar
      symbolize: Calculate a module's zero VA using program headers. · a93a4511
      Peter Collingbourne authored
      Previously we were using a module's "start address", i.e. the
      address at which the module's executable region was mapped, as the
      zero virtual address, i.e. the address from which the DSO's virtual
      addresses are calculated. This works fine for DSOs created by the
      bfd and gold linkers, which will emit a PT_LOAD directive into the
      program header which loads the executable region at virtual address
      (p_vaddr) and file offset (p_offset) 0.
      
      However, the lld linker may place a read-only region before the
      executable region, meaning that both p_vaddr and p_offset for the
      executable region are non-zero. This means that any symbols resolved
      by the symbolizer are resolved to an incorrect virtual address. To
      correctly calculate the address corresponding to virtual address zero,
      we need to take into account p_vaddr and p_offset.
      
      Specifically, the calculation starts with the "base address", i.e. the
      start address minus the file offset. To get from the base address to
      virtual address zero, we first add p_offset. This gives us the mapped
      address of the start of the segment, or in other words the mapped
      address corresponding to the virtual address of the segment. (Note
      that this is distinct from the start address, as p_offset is not
      guaranteed to be page aligned.) We then subtract p_vaddr, which takes
      us to virtual address zero.
      a93a4511
  9. 15 Apr, 2016 1 commit
  10. 13 Apr, 2016 2 commits
  11. 11 Apr, 2016 1 commit
  12. 05 Apr, 2016 1 commit
  13. 31 Mar, 2016 2 commits
  14. 21 Mar, 2016 1 commit
  15. 08 Jan, 2016 2 commits
  16. 17 Dec, 2015 4 commits
  17. 27 Nov, 2015 1 commit
  18. 26 Nov, 2015 1 commit
  19. 10 Nov, 2015 3 commits