[13/16] SBM: Graphs that show the infidelity of -sstderr

Everybody seems to use +RTS -sstderr to measure the memory performance of their Haskell (ghc) code. That's what I started out doing, too. However, top seemed to occasionally disagree with the run-time system. I decided to dig deeper and ask the operating system at process exit time. I use LD_PRELOAD to get my code injected into each benchmarked process where it gets activated when the process is about to exit and copies /proc/self/maps and /proc/self/status to stderr where the test harness captures them. Unfortunately, -sstderr really *IS* unreliable! tools/regensstderr.sh and tools/sstderr.pl are two scripts that together generate bar graphs for an existing measurement tarball. I used the following shell code to generate graphs for 7 different ghc/bytestring combinations: (for F in ghc-thorough-6.6.1.tgz \ ghc-thorough-6.8.2.tgz ghc-thorough-6.8.2-bs0902.tgz \ ghc-thorough-6.9.tgz ghc-thorough-6.9-bs0902.tgz \ ghc-thorough-head.tgz ghc-thorough-head-bs0902.tgz; \ do \ printf "%s\n-------\n" $F; \ tools/regensstderr.sh $F; \ printf "\n\n"; \ done \ ) > xx The graphs clearly show that -sstderr sometimes severely underestimates the memory use and sometimes somewhat overestimates it. Moreover, the errors are not always for the same programs. This holds for all ghc versions I've tested: 6.6.1, 6.8.2, 6.9.20071119, and head as of noon 2007-12-19. -Peter ghc-thorough-6.6.1.tgz ------- hs/byte-bs----acc: 1 147448 ▏ |██████████████████▎ | hs/byte-bs----foldlx: 145 147468 ██████████▎ |██████████████████▎ | hs/byte-bs----foldrx: 1 147452 ▏ |██████████████████▎ | hs/byte-bsl---acc: 2 2872 ▏ |▍ | hs/byte-xxxxx-acc-1: 1 1572 ▏ |▎ | hs/byte-xxxxx-acc-2: 1 1568 ▏ |▎ | hs/byte-xxxxx-foldl: 1 1572 ▏ |▎ | hs/space-bs-c8-acc-1: 1 147448 ▏ |██████████████████▎ | hs/space-bs-c8-count: 1 147448 ▏ |██████████████████▎ | hs/space-bs-c8-foldlx-1: 145 147468 ██████████▎ |██████████████████▎ | hs/space-bs-c8-foldlx-2: 145 147468 ██████████▎ |██████████████████▎ | hs/space-bs-c8-foldrx: 1 147448 ▏ |██████████████████▎ | hs/space-bs-c8-lenfil: 145 147464 ██████████▎ |██████████████████▎ | hs/space-bslc8-acc-1: 2 2872 ▏ |▍ | hs/space-bslc8-acc-2: 2 2872 ▏ |▍ | hs/space-bslc8-acc-3: 2 2868 ▏ |▍ | hs/space-bslc8-count: 2 1476 ▏ |▏ | hs/space-bslc8-foldl: 2 1552 ▏ |▎ | hs/space-bslc8-foldlx-1: 2 1556 ▏ |▎ | hs/space-bslc8-foldlx-2: 2 1552 ▏ |▎ | hs/space-bslc8-foldr-1: 297 169480 █████████████████████|█████████████████████| hs/space-bslc8-foldr-2: 297 169480 █████████████████████|█████████████████████| hs/space-bslc8-lenfil-1: 38 38632 ██▋ |████▊ | hs/space-bslc8-lenfil-2: 38 38628 ██▋ |████▊ | hs/space-bsl---foldlx: 2 1560 ▏ |▎ | hs/space-xxxxx-acc-1: 1 1568 ▏ |▎ | hs/space-xxxxx-acc-2: 1 1572 ▏ |▎ | hs/space-xxxxx-foldl: 1 1572 ▏ |▎ | hs/space-xxxxx-lenfil: 1 1556 ▏ |▎ | c/byte-getchar: - - c/byte-getchar-u: - - c/byte-4k: - - c/space-getchar: - - c/space-getchar-u: - - c/space-4k: - - c/space-megabuf: - - c/space-getwchar: - - c/space-getwchar-u: - - c/space-32k: - - c/space-32k-8: - - ghc-thorough-6.8.2.tgz ------- hs/byte-bs----acc: 1 147500 ▏ |██████████████████▎ | hs/byte-bs----foldlx: 145 147528 ██████████▎ |██████████████████▎ | hs/byte-bs----foldrx: 1 147500 ▏ |██████████████████▎ | hs/byte-bsl---acc: 2 2920 ▏ |▍ | hs/byte-xxxxx-acc-1: 1 1632 ▏ |▎ | hs/byte-xxxxx-acc-2: 1 1636 ▏ |▎ | hs/byte-xxxxx-foldl: 1 1632 ▏ |▎ | hs/space-bs-c8-acc-1: 1 147492 ▏ |██████████████████▎ | hs/space-bs-c8-count: 1 147500 ▏ |██████████████████▎ | hs/space-bs-c8-foldlx-1: 145 147524 ██████████▎ |██████████████████▎ | hs/space-bs-c8-foldlx-2: 145 147520 ██████████▎ |██████████████████▎ | hs/space-bs-c8-foldrx: 1 147496 ▏ |██████████████████▎ | hs/space-bs-c8-lenfil: 145 147524 ██████████▎ |██████████████████▎ | hs/space-bslc8-acc-1: 2 2920 ▏ |▍ | hs/space-bslc8-acc-2: 2 2924 ▏ |▍ | hs/space-bslc8-acc-3: 2 2924 ▏ |▍ | hs/space-bslc8-chunk-1: 2 1512 ▏ |▏ | hs/space-bslc8-chunk-2: 2 1512 ▏ |▏ | hs/space-bslc8-chunk-3: 2 1548 ▏ |▎ | hs/space-bslc8-chunk-4: 2 1512 ▏ |▏ | hs/space-bslc8-count: 2 1520 ▏ |▎ | hs/space-bslc8-foldl: 2 1620 ▏ |▎ | hs/space-bslc8-foldlx-1: 2 1620 ▏ |▎ | hs/space-bslc8-foldlx-2: 2 1616 ▏ |▎ | hs/space-bslc8-foldr-1: 297 169544 █████████████████████|█████████████████████| hs/space-bslc8-foldr-2: 297 169544 █████████████████████|█████████████████████| hs/space-bslc8-lenfil-1: 38 38644 ██▋ |████▊ | hs/space-bslc8-lenfil-2: 38 38648 ██▋ |████▊ | hs/space-bsl---foldlx: 2 1616 ▏ |▎ | hs/space-xxxxx-acc-1: 1 1636 ▏ |▎ | hs/space-xxxxx-acc-2: 1 1636 ▏ |▎ | hs/space-xxxxx-foldl: 1 1636 ▏ |▎ | hs/space-xxxxx-lenfil: 1 1608 ▏ |▎ | c/byte-getchar: - - c/byte-getchar-u: - - c/byte-4k: - - c/space-getchar: - - c/space-getchar-u: - - c/space-4k: - - c/space-megabuf: - - c/space-getwchar: - - c/space-getwchar-u: - - c/space-32k: - - c/space-32k-8: - - ghc-thorough-6.8.2-bs0902.tgz ------- hs/byte-bs----acc: 1 147616 ▏ |██████████████████▌ | hs/byte-bs----foldlx: 1 147624 ▏ |██████████████████▌ | hs/byte-bs----foldrx: 1 147624 ▏ |██████████████████▌ | hs/byte-bsl---acc: 2 3040 ▎ |▍ | hs/byte-xxxxx-acc-1: 1 1636 ▏ |▎ | hs/byte-xxxxx-acc-2: 1 1636 ▏ |▎ | hs/byte-xxxxx-foldl: 1 1636 ▏ |▎ | hs/space-bs-c8-acc-1: 1 147608 ▏ |██████████████████▌ | hs/space-bs-c8-count: 1 147612 ▏ |██████████████████▌ | hs/space-bs-c8-foldlx-1: 1 147608 ▏ |██████████████████▌ | hs/space-bs-c8-foldlx-2: 1 147608 ▏ |██████████████████▌ | hs/space-bs-c8-foldrx: 1 147608 ▏ |██████████████████▌ | hs/space-bs-c8-lenfil: 21 167176 ███ |█████████████████████| hs/space-bslc8-acc-1: 2 3048 ▎ |▍ | hs/space-bslc8-acc-2: 2 3048 ▎ |▍ | hs/space-bslc8-acc-3: 2 3052 ▎ |▍ | hs/space-bslc8-chunk-1: 2 1636 ▎ |▎ | hs/space-bslc8-chunk-2: 2 1640 ▎ |▎ | hs/space-bslc8-chunk-3: 2 1644 ▎ |▎ | hs/space-bslc8-chunk-4: 2 1636 ▎ |▎ | hs/space-bslc8-count: 2 1656 ▎ |▎ | hs/space-bslc8-foldl: 2 1632 ▎ |▎ | hs/space-bslc8-foldlx-1: 2 1636 ▎ |▎ | hs/space-bslc8-foldlx-2: 2 1636 ▎ |▎ | hs/space-bslc8-foldr-1: 149 149076 █████████████████████|██████████████████▊ | hs/space-bslc8-foldr-2: 149 149076 █████████████████████|██████████████████▊ | hs/space-bslc8-lenfil-1: 2 1940 ▎ |▎ | hs/space-bslc8-lenfil-2: 2 1940 ▎ |▎ | hs/space-bsl---foldlx: 2 1620 ▎ |▎ | hs/space-xxxxx-acc-1: 1 1636 ▏ |▎ | hs/space-xxxxx-acc-2: 1 1636 ▏ |▎ | hs/space-xxxxx-foldl: 1 1636 ▏ |▎ | hs/space-xxxxx-lenfil: 1 1604 ▏ |▎ | c/byte-getchar: - - c/byte-getchar-u: - - c/byte-4k: - - c/space-getchar: - - c/space-getchar-u: - - c/space-4k: - - c/space-megabuf: - - c/space-getwchar: - - c/space-getwchar-u: - - c/space-32k: - - c/space-32k-8: - - ghc-thorough-6.9.tgz ------- hs/byte-bs----acc: 1 147752 ▏ |█████████████████▍ | hs/byte-bs----foldlx: 145 147748 █████████▊ |█████████████████▍ | hs/byte-bs----foldrx: 1 147744 ▏ |█████████████████▍ | hs/byte-bsl---acc: 2 3172 ▏ |▍ | hs/byte-xxxxx-acc-1: 1 1904 ▏ |▎ | hs/byte-xxxxx-acc-2: 1 1904 ▏ |▎ | hs/byte-xxxxx-foldl: 1 1900 ▏ |▎ | hs/space-bs-c8-acc-1: 1 147736 ▏ |█████████████████▍ | hs/space-bs-c8-count: 1 147744 ▏ |█████████████████▍ | hs/space-bs-c8-foldlx-1: 145 147756 █████████▊ |█████████████████▍ | hs/space-bs-c8-foldlx-2: 145 147752 █████████▊ |█████████████████▍ | hs/space-bs-c8-foldrx: 1 147732 ▏ |█████████████████▍ | hs/space-bs-c8-lenfil: 145 147756 █████████▊ |█████████████████▍ | hs/space-bslc8-acc-1: 2 3192 ▏ |▍ | hs/space-bslc8-acc-2: 2 3192 ▏ |▍ | hs/space-bslc8-acc-3: 2 3196 ▏ |▍ | hs/space-bslc8-chunk-1: 64 65192 ████▎ |███████▋ | hs/space-bslc8-chunk-2: 64 65192 ████▎ |███████▋ | hs/space-bslc8-chunk-3: 74 75240 █████ |████████▉ | hs/space-bslc8-chunk-4: 75 76188 █████ |█████████ | hs/space-bslc8-count: 78 79204 █████▎ |█████████▍ | hs/space-bslc8-foldl: 85 85868 █████▊ |██████████▏ | hs/space-bslc8-foldlx-1: 85 85864 █████▊ |██████████▏ | hs/space-bslc8-foldlx-2: 85 85868 █████▊ |██████████▏ | hs/space-bslc8-foldr-1: 297 169700 ████████████████████|████████████████████| hs/space-bslc8-foldr-2: 297 169700 ████████████████████|████████████████████| hs/space-bslc8-lenfil-1: 115 109404 ███████▊ |████████████▉ | hs/space-bslc8-lenfil-2: 115 109404 ███████▊ |████████████▉ | hs/space-bsl---foldlx: 85 85836 █████▊ |██████████▏ | hs/space-xxxxx-acc-1: 1 1904 ▏ |▎ | hs/space-xxxxx-acc-2: 1 1904 ▏ |▎ | hs/space-xxxxx-foldl: 1 1900 ▏ |▎ | hs/space-xxxxx-lenfil: 1 1892 ▏ |▎ | hand/byte-bs----acc-a: 1 147764 ▏ |█████████████████▍ | hand/byte-bs----acc-b: 1 147764 ▏ |█████████████████▍ | hand/byte-bs----acc-c: 1 147760 ▏ |█████████████████▍ | hand/byte-bs----acc-d: 1 147760 ▏ |█████████████████▍ | hand/space-bs-c8-acc-1-a: 1 147752 ▏ |█████████████████▍ | hand/space-bs-c8-acc-1-b: 1 147752 ▏ |█████████████████▍ | hand/space-bs-c8-acc-1-c: 1 147752 ▏ |█████████████████▍ | hand/space-bs-c8-acc-1-d: 1 147756 ▏ |█████████████████▍ | hand/space-bs-c8-acc-1-e: 1 147752 ▏ |█████████████████▍ | hand/space-bs-c8-acc-1-f: 1 147748 ▏ |█████████████████▍ | hand/space-bs-c8-acc-1-g: 1 147752 ▏ |█████████████████▍ | hand/space-bs-c8-acc-1-h: 1 147748 ▏ |█████████████████▍ | hand/space-bs-c8-acc-1-i: 1 147748 ▏ |█████████████████▍ | hand/space-bs-c8-acc-1-j: 1 147748 ▏ |█████████████████▍ | hand/space-bs-c8-acc-1-k: 1 147752 ▏ |█████████████████▍ | hand/space-bs-c8-acc-1-l: 1 147752 ▏ |█████████████████▍ | hand/space-bs-c8-acc-1-m: 1 147748 ▏ |█████████████████▍ | hand/space-bs-c8-acc-1-n: 1 147752 ▏ |█████████████████▍ | hand/space-bs-c8-acc-1-o: 1 147752 ▏ |█████████████████▍ | hand/space-bs-c8-acc-1-p: 1 147752 ▏ |█████████████████▍ | hand/space-bs-c8-acc-1-q: 1 147748 ▏ |█████████████████▍ | hand/space-bs-c8-acc-1-r: 1 147748 ▏ |█████████████████▍ | hand/space-bs-c8-acc-1-s: 1 147744 ▏ |█████████████████▍ | c/byte-getchar: - - c/byte-getchar-u: - - c/byte-4k: - - c/space-getchar: - - c/space-getchar-u: - - c/space-4k: - - c/space-megabuf: - - c/space-getwchar: - - c/space-getwchar-u: - - c/space-32k: - - c/space-32k-8: - - ghc-thorough-6.9-bs0902.tgz ------- hs/byte-bs----acc: 1 147732 ▏ |██████████████████▌ | hs/byte-bs----foldlx: 1 147736 ▏ |██████████████████▌ | hs/byte-bs----foldrx: 1 147740 ▏ |██████████████████▌ | hs/byte-bsl---acc: 2 3184 ▎ |▍ | hs/byte-xxxxx-acc-1: 1 1904 ▏ |▎ | hs/byte-xxxxx-acc-2: 1 1900 ▏ |▎ | hs/byte-xxxxx-foldl: 1 1904 ▏ |▎ | hs/space-bs-c8-acc-1: 1 147740 ▏ |██████████████████▌ | hs/space-bs-c8-count: 1 147756 ▏ |██████████████████▌ | hs/space-bs-c8-foldlx-1: 1 147744 ▏ |██████████████████▌ | hs/space-bs-c8-foldlx-2: 1 147748 ▏ |██████████████████▌ | hs/space-bs-c8-foldrx: 1 147748 ▏ |██████████████████▌ | hs/space-bs-c8-lenfil: 21 167300 ███ |█████████████████████| hs/space-bslc8-acc-1: 2 3228 ▎ |▍ | hs/space-bslc8-acc-2: 2 3228 ▎ |▍ | hs/space-bslc8-acc-3: 2 3232 ▎ |▍ | hs/space-bslc8-chunk-1: 65 66216 █████████▏ |████████▎ | hs/space-bslc8-chunk-2: 65 66216 █████████▏ |████████▎ | hs/space-bslc8-chunk-3: 65 66208 █████████▏ |████████▎ | hs/space-bslc8-chunk-4: 78 79232 ███████████ |██████████ | hs/space-bslc8-count: 81 82248 ███████████▍ |██████████▍ | hs/space-bslc8-foldl: 78 79224 ███████████ |██████████ | hs/space-bslc8-foldlx-1: 78 79224 ███████████ |██████████ | hs/space-bslc8-foldlx-2: 78 79224 ███████████ |██████████ | hs/space-bslc8-foldr-1: 149 149704 █████████████████████|██████████████████▊ | hs/space-bslc8-foldr-2: 149 149708 █████████████████████|██████████████████▊ | hs/space-bslc8-lenfil-1: 81 82324 ███████████▍ |██████████▍ | hs/space-bslc8-lenfil-2: 81 82328 ███████████▍ |██████████▍ | hs/space-bsl---foldlx: 78 79184 ███████████ |██████████ | hs/space-xxxxx-acc-1: 1 1904 ▏ |▎ | hs/space-xxxxx-acc-2: 1 1900 ▏ |▎ | hs/space-xxxxx-foldl: 1 1904 ▏ |▎ | hs/space-xxxxx-lenfil: 1 1892 ▏ |▎ | c/byte-getchar: - - c/byte-getchar-u: - - c/byte-4k: - - c/space-getchar: - - c/space-getchar-u: - - c/space-4k: - - c/space-megabuf: - - c/space-getwchar: - - c/space-getwchar-u: - - c/space-32k: - - c/space-32k-8: - - ghc-thorough-head.tgz ------- hs/byte-bs----acc: 1 147772 ▏ |██████████████████▎ | hs/byte-bs----foldlx: 145 147796 ██████████▎ |██████████████████▎ | hs/byte-bs----foldrx: 1 147772 ▏ |██████████████████▎ | hs/byte-bsl---acc: 2 3212 ▏ |▍ | hs/byte-xxxxx-acc-1: 1 1900 ▏ |▎ | hs/byte-xxxxx-acc-2: 1 1900 ▏ |▎ | hs/byte-xxxxx-foldl: 1 1900 ▏ |▎ | hs/space-bs-c8-acc-1: 1 147752 ▏ |██████████████████▎ | hs/space-bs-c8-count: 1 147764 ▏ |██████████████████▎ | hs/space-bs-c8-foldlx-1: 145 147796 ██████████▎ |██████████████████▎ | hs/space-bs-c8-foldlx-2: 145 147796 ██████████▎ |██████████████████▎ | hs/space-bs-c8-foldrx: 1 147760 ▏ |██████████████████▎ | hs/space-bs-c8-lenfil: 145 147788 ██████████▎ |██████████████████▎ | hs/space-bslc8-acc-1: 2 3180 ▏ |▍ | hs/space-bslc8-acc-2: 2 3180 ▏ |▍ | hs/space-bslc8-acc-3: 2 3172 ▏ |▍ | hs/space-bslc8-chunk-1: 64 65204 ████▌ |████████▏ | hs/space-bslc8-chunk-2: 64 65204 ████▌ |████████▏ | hs/space-bslc8-chunk-3: 74 75216 █████▎ |█████████▎ | hs/space-bslc8-chunk-4: 75 76176 █████▎ |█████████▍ | hs/space-bslc8-count: 78 79220 █████▌ |█████████▊ | hs/space-bslc8-foldl: 85 85852 ██████ |██████████▋ | hs/space-bslc8-foldlx-1: 85 85852 ██████ |██████████▋ | hs/space-bslc8-foldlx-2: 85 85852 ██████ |██████████▋ | hs/space-bslc8-foldr-1: 297 169680 █████████████████████|█████████████████████| hs/space-bslc8-foldr-2: 297 169676 █████████████████████|█████████████████████| hs/space-bslc8-lenfil-1: 115 109388 ████████▏ |█████████████▌ | hs/space-bslc8-lenfil-2: 115 109392 ████████▏ |█████████████▌ | hs/space-bsl---foldlx: 85 85864 ██████ |██████████▋ | hs/space-xxxxx-acc-1: 1 1900 ▏ |▎ | hs/space-xxxxx-acc-2: 1 1904 ▏ |▎ | hs/space-xxxxx-foldl: 1 1904 ▏ |▎ | hs/space-xxxxx-lenfil: 1 1888 ▏ |▎ | c/byte-getchar: - - c/byte-getchar-u: - - c/byte-4k: - - c/space-getchar: - - c/space-getchar-u: - - c/space-4k: - - c/space-megabuf: - - c/space-getwchar: - - c/space-getwchar-u: - - c/space-32k: - - c/space-32k-8: - - ghc-thorough-head-bs0902.tgz ------- hs/byte-bs----acc: 1 147780 ▏ |██████████████████▌ | hs/byte-bs----foldlx: 1 147780 ▏ |██████████████████▌ | hs/byte-bs----foldrx: 1 147784 ▏ |██████████████████▌ | hs/byte-bsl---acc: 2 3216 ▎ |▍ | hs/byte-xxxxx-acc-1: 1 1900 ▏ |▎ | hs/byte-xxxxx-acc-2: 1 1896 ▏ |▎ | hs/byte-xxxxx-foldl: 1 1896 ▏ |▎ | hs/space-bs-c8-acc-1: 1 147752 ▏ |██████████████████▌ | hs/space-bs-c8-count: 1 147776 ▏ |██████████████████▌ | hs/space-bs-c8-foldlx-1: 1 147752 ▏ |██████████████████▌ | hs/space-bs-c8-foldlx-2: 1 147756 ▏ |██████████████████▌ | hs/space-bs-c8-foldrx: 1 147756 ▏ |██████████████████▌ | hs/space-bs-c8-lenfil: 21 167320 ███ |█████████████████████| hs/space-bslc8-acc-1: 2 3196 ▎ |▍ | hs/space-bslc8-acc-2: 2 3200 ▎ |▍ | hs/space-bslc8-acc-3: 2 3208 ▎ |▍ | hs/space-bslc8-chunk-1: 65 66224 █████████▏ |████████▎ | hs/space-bslc8-chunk-2: 65 66228 █████████▏ |████████▎ | hs/space-bslc8-chunk-3: 65 66224 █████████▏ |████████▎ | hs/space-bslc8-chunk-4: 78 79204 ███████████ |██████████ | hs/space-bslc8-count: 81 82224 ███████████▍ |██████████▍ | hs/space-bslc8-foldl: 78 79196 ███████████ |██████████ | hs/space-bslc8-foldlx-1: 78 79196 ███████████ |██████████ | hs/space-bslc8-foldlx-2: 78 79196 ███████████ |██████████ | hs/space-bslc8-foldr-1: 149 149680 █████████████████████|██████████████████▊ | hs/space-bslc8-foldr-2: 149 149676 █████████████████████|██████████████████▊ | hs/space-bslc8-lenfil-1: 81 82304 ███████████▍ |██████████▍ | hs/space-bslc8-lenfil-2: 81 82300 ███████████▍ |██████████▍ | hs/space-bsl---foldlx: 78 79208 ███████████ |██████████ | hs/space-xxxxx-acc-1: 1 1904 ▏ |▎ | hs/space-xxxxx-acc-2: 1 1900 ▏ |▎ | hs/space-xxxxx-foldl: 1 1904 ▏ |▎ | hs/space-xxxxx-lenfil: 1 1888 ▏ |▎ | c/byte-getchar: - - c/byte-getchar-u: - - c/byte-4k: - - c/space-getchar: - - c/space-getchar-u: - - c/space-4k: - - c/space-megabuf: - - c/space-getwchar: - - c/space-getwchar-u: - - c/space-32k: - - c/space-32k-8: - -
participants (1)
-
Peter Firefly Brodersen Lund