Guest User

Untitled

a guest
Aug 14th, 2022
216
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 14.39 KB | Source Code | 0 0
  1. [ armitage watchtower straylight dev ~/src/uv/straylight ] # let's have a look at all the processes running on the system...
  2. [ armitage watchtower straylight dev ~/src/uv/straylight ] l /proc/*/exe 2>/dev/null
  3. lrwxrwxrwx 0 root             14 Aug 17:54/proc/100/exe
  4. lrwxrwxrwx 0 root             14 Aug 17:54/proc/1013/exe
  5.  
  6. ... omitted ...
  7.  
  8. lrwxrwxrwx 0 root             14 Aug 17:54/proc/136896/exe
  9. lrwxrwxrwx 0 root             14 Aug 17:54/proc/137723/exe
  10. lrwxrwxrwx 0 root             14 Aug 17:54/proc/13/exe
  11. lrwxrwxrwx 0 root             14 Aug 17:54/proc/140655/exe
  12. lrwxrwxrwx 0 root             14 Aug 17:54/proc/141922/exe
  13. lrwxrwxrwx 0 armitage         14 Aug 02:20/proc/1426/exe -> /nix/store/lwkp9z6w20yvavz6g87gfiglbp5xagb0-systemd-250.4/lib/systemd/systemd
  14. lrwxrwxrwx 0 root             14 Aug 17:54/proc/1427/exe
  15. lrwxrwxrwx 0 root             14 Aug 17:54/proc/144318/exe
  16. lrwxrwxrwx 0 root             14 Aug 17:54/proc/145674/exe
  17. lrwxrwxrwx 0 root             14 Aug 17:54/proc/145980/exe
  18. lrwxrwxrwx 0 root             14 Aug 17:54/proc/145/exe
  19. lrwxrwxrwx 0 root             14 Aug 17:54/proc/146/exe
  20. lrwxrwxrwx 0 root             14 Aug 17:54/proc/147928/exe
  21. lrwxrwxrwx 0 root             14 Aug 17:54/proc/147/exe
  22. lrwxrwxrwx 0 root             14 Aug 17:54/proc/148449/exe
  23. lrwxrwxrwx 0 root             14 Aug 17:54/proc/14/exe
  24. lrwxrwxrwx 0 armitage         14 Aug 17:54/proc/1504/exe -> /nix/store/vkgkg1cz4ny46n9wqy0cb0y618m22y0a-tmux-3.2a/bin/tmux
  25. lrwxrwxrwx 0 armitage         14 Aug 17:54/proc/1546/exe -> /nix/store/pa9416c0x5qa4r2z3zq701qg8gyr0c73-bash-interactive-5.1-p16/bin/bash
  26. lrwxrwxrwx 0 root             14 Aug 17:54/proc/155/exe
  27. lrwxrwxrwx 0 root             14 Aug 17:54/proc/156/exe
  28. lrwxrwxrwx 0 root             14 Aug 17:54/proc/159634/exe
  29. lrwxrwxrwx 0 root             14 Aug 17:54/proc/15/exe
  30. lrwxrwxrwx 0 armitage         14 Aug 17:54/proc/16262/exe -> /nix/store/pa9416c0x5qa4r2z3zq701qg8gyr0c73-bash-interactive-5.1-p16/bin/bash
  31. lrwxrwxrwx 0 root             14 Aug 17:54/proc/163292/exe
  32. lrwxrwxrwx 0 root             14 Aug 17:54/proc/166990/exe
  33. lrwxrwxrwx 0 root             14 Aug 17:54/proc/16/exe
  34. lrwxrwxrwx 0 root             14 Aug 17:54/proc/170678/exe
  35. lrwxrwxrwx 0 root             14 Aug 17:54/proc/174321/exe
  36. lrwxrwxrwx 0 root             14 Aug 17:54/proc/177989/exe
  37. lrwxrwxrwx 0 root             14 Aug 17:54/proc/17/exe
  38. lrwxrwxrwx 0 armitage         14 Aug 16:52/proc/181296/exe -> /nix/store/vix7lkybm9m9l0sjipcpxhnpgkgwqpvk-openjdk-headless-11.0.15+10/lib/openjdk/bin/java
  39. lrwxrwxrwx 0 root             14 Aug 17:54/proc/183118/exe
  40. lrwxrwxrwx 0 root             14 Aug 17:54/proc/18/exe
  41. lrwxrwxrwx 0 root             14 Aug 17:54/proc/193045/exe
  42. lrwxrwxrwx 0 armitage         14 Aug 17:54/proc/193050/exe -> /nix/store/pa9416c0x5qa4r2z3zq701qg8gyr0c73-bash-interactive-5.1-p16/bin/bash
  43. lrwxrwxrwx 0 armitage         14 Aug 17:54/proc/193068/exe -> /nix/store/vkgkg1cz4ny46n9wqy0cb0y618m22y0a-tmux-3.2a/bin/tmux
  44. lrwxrwxrwx 0 root             14 Aug 17:54/proc/19/exe
  45. lrwxrwxrwx 0 root             14 Aug 01:16/proc/1/exe
  46. lrwxrwxrwx 0 armitage         14 Aug 17:54/proc/202571/exe -> /nix/store/887536bk4zhcirg95ynhqr9klkfnm0z8-emacs-28.1/bin/.emacs-28.1-wrapped
  47. lrwxrwxrwx 0 armitage         14 Aug 17:08  /proc/202586/exe -> /nix/store/cl3hvqmapznjsw06l5hyfnjnhbhknbcd-haskell-language-server-1.7.0.0/bin/haskell-language-server
  48. lrwxrwxrwx 0 root             14 Aug 17:54/proc/204033/exe
  49. lrwxrwxrwx 0 armitage         14 Aug 17:29/proc/204604/exe -> /nix/store/csvwymvk2pgdkawlc1x75gz3rci7z1as-clang-13.0.1/bin/clangd
  50. lrwxrwxrwx 0 root             14 Aug 17:54/proc/205467/exe
  51. lrwxrwxrwx 0 root             14 Aug 17:55/proc/206407/exe
  52. lrwxrwxrwx 0 root             14 Aug 17:54/proc/206/exe
  53. lrwxrwxrwx 0 root             14 Aug 17:54/proc/96/exe
  54.  
  55. ... ommitted ...
  56.  
  57. lrwxrwxrwx 0 root             14 Aug 17:54/proc/976/exe
  58. lrwxrwxrwx 0 root             14 Aug 17:54/proc/97/exe
  59. lrwxrwxrwx 0 root             14 Aug 17:54/proc/98/exe
  60. lrwxrwxrwx 0 root             14 Aug 17:54/proc/99/exe
  61. lrwxrwxrwx 0 armitage         14 Aug 18:03  /proc/self/exe -> /nix/store/rdqp622ff9ssyhgjv375ah3bvp45nizp-exa-0.10.1/bin/exa
  62. lrwxrwxrwx 0 armitage         14 Aug 18:03  /proc/thread-self/exe -> /nix/store/rdqp622ff9ssyhgjv375ah3bvp45nizp-exa-0.10.1/bin/exa
  63.  
  64. [ armitage watchtower straylight dev ~/src/uv/straylight ] # we only want the ones where the `exe` symlink points somewhere, the rest are (mostly) internal kernel processes (e.g. `[ksoftirqd/2]`)
  65.  
  66. [ armitage watchtower straylight dev ~/src/uv/straylight ] l /proc/*/exe 2>/dev/null | rg ">"
  67. lrwxrwxrwx 0 armitage         14 Aug 02:20/proc/1426/exe -> /nix/store/lwkp9z6w20yvavz6g87gfiglbp5xagb0-systemd-250.4/lib/systemd/systemd
  68. lrwxrwxrwx 0 armitage         14 Aug 17:54/proc/1504/exe -> /nix/store/vkgkg1cz4ny46n9wqy0cb0y618m22y0a-tmux-3.2a/bin/tmux
  69. lrwxrwxrwx 0 armitage         14 Aug 17:54/proc/1546/exe -> /nix/store/pa9416c0x5qa4r2z3zq701qg8gyr0c73-bash-interactive-5.1-p16/bin/bash
  70. lrwxrwxrwx 0 armitage         14 Aug 17:54/proc/16262/exe -> /nix/store/pa9416c0x5qa4r2z3zq701qg8gyr0c73-bash-interactive-5.1-p16/bin/bash
  71. lrwxrwxrwx 0 armitage         14 Aug 16:52/proc/181296/exe -> /nix/store/vix7lkybm9m9l0sjipcpxhnpgkgwqpvk-openjdk-headless-11.0.15+10/lib/openjdk/bin/java
  72. lrwxrwxrwx 0 armitage         14 Aug 17:54/proc/193050/exe -> /nix/store/pa9416c0x5qa4r2z3zq701qg8gyr0c73-bash-interactive-5.1-p16/bin/bash
  73. lrwxrwxrwx 0 armitage         14 Aug 17:54/proc/193068/exe -> /nix/store/vkgkg1cz4ny46n9wqy0cb0y618m22y0a-tmux-3.2a/bin/tmux
  74. lrwxrwxrwx 0 armitage         14 Aug 17:54/proc/202571/exe -> /nix/store/887536bk4zhcirg95ynhqr9klkfnm0z8-emacs-28.1/bin/.emacs-28.1-wrapped
  75. lrwxrwxrwx 0 armitage         14 Aug 17:08  /proc/202586/exe -> /nix/store/cl3hvqmapznjsw06l5hyfnjnhbhknbcd-haskell-language-server-1.7.0.0/bin/haskell-language-server
  76. lrwxrwxrwx 0 armitage         14 Aug 17:29/proc/204604/exe -> /nix/store/csvwymvk2pgdkawlc1x75gz3rci7z1as-clang-13.0.1/bin/clangd
  77. lrwxrwxrwx 0 armitage         14 Aug 18:06  /proc/207784/exe -> /nix/store/rdqp622ff9ssyhgjv375ah3bvp45nizp-exa-0.10.1/bin/exa
  78. lrwxrwxrwx 0 armitage         14 Aug 18:06  /proc/207785/exe -> /nix/store/y1ilfhl51jr1m8y8dn2pl07703ppcadn-ripgrep-13.0.0/bin/rg
  79. lrwxrwxrwx 0 armitage         14 Aug 17:54/proc/3828/exe -> /nix/store/pa9416c0x5qa4r2z3zq701qg8gyr0c73-bash-interactive-5.1-p16/bin/bash
  80. lrwxrwxrwx 0 armitage         14 Aug 17:54/proc/3907/exe -> /nix/store/pa9416c0x5qa4r2z3zq701qg8gyr0c73-bash-interactive-5.1-p16/bin/bash
  81. lrwxrwxrwx 0 armitage         14 Aug 17:54/proc/47099/exe -> /nix/store/pa9416c0x5qa4r2z3zq701qg8gyr0c73-bash-interactive-5.1-p16/bin/bash
  82. lrwxrwxrwx 0 armitage         14 Aug 17:54/proc/61232/exe -> /nix/store/pa9416c0x5qa4r2z3zq701qg8gyr0c73-bash-interactive-5.1-p16/bin/bash
  83. lrwxrwxrwx 0 armitage         14 Aug 18:06  /proc/self/exe -> /nix/store/rdqp622ff9ssyhgjv375ah3bvp45nizp-exa-0.10.1/bin/exa
  84. lrwxrwxrwx 0 armitage         14 Aug 18:06  /proc/thread-self/exe -> /nix/store/rdqp622ff9ssyhgjv375ah3bvp45nizp-exa-0.10.1/bin/exa
  85.  
  86. [ armitage watchtower straylight dev ~/src/uv/straylight ] # let's get the unique ones
  87.  
  88. [ armitage watchtower straylight dev ~/src/uv/straylight ] l /proc/*/exe 2>/dev/null | rg ">" | awk -F " " '{ print $NF }' | sort | uniq -c
  89.       2 /nix/store/47n5hzqpahs7yv84ia6cxp3jg9ca8r86-coreutils-9.0/bin/coreutils
  90.       1 /nix/store/887536bk4zhcirg95ynhqr9klkfnm0z8-emacs-28.1/bin/.emacs-28.1-wrapped
  91.       1 /nix/store/cl3hvqmapznjsw06l5hyfnjnhbhknbcd-haskell-language-server-1.7.0.0/bin/haskell-language-server
  92.       1 /nix/store/csvwymvk2pgdkawlc1x75gz3rci7z1as-clang-13.0.1/bin/clangd
  93.       1 /nix/store/fr7vrxblkj327ypn3vhjwfhf19lddqqd-gawk-5.1.1/bin/gawk
  94.       1 /nix/store/lwkp9z6w20yvavz6g87gfiglbp5xagb0-systemd-250.4/lib/systemd/systemd
  95.       7 /nix/store/pa9416c0x5qa4r2z3zq701qg8gyr0c73-bash-interactive-5.1-p16/bin/bash
  96.       3 /nix/store/rdqp622ff9ssyhgjv375ah3bvp45nizp-exa-0.10.1/bin/exa
  97.       1 /nix/store/vix7lkybm9m9l0sjipcpxhnpgkgwqpvk-openjdk-headless-11.0.15+10/lib/openjdk/bin/java
  98.       2 /nix/store/vkgkg1cz4ny46n9wqy0cb0y618m22y0a-tmux-3.2a/bin/tmux
  99.       1 /nix/store/y1ilfhl51jr1m8y8dn2pl07703ppcadn-ripgrep-13.0.0/bin/rg
  100.  
  101. [ armitage watchtower straylight dev ~/src/uv/straylight ] # roughly 21 processes
  102. [ armitage watchtower straylight dev ~/src/uv/straylight ] # let's have a look at the dynamic linking story for just `glibc` (that's the red meat)...
  103. [ armitage watchtower straylight dev ~/src/uv/straylight ] # we'll start with one of my programs (links in a bunch of stuff! but i know about static linking...)
  104.  
  105. [ armitage watchtower straylight dev ~/src/uv/straylight ] readelf -d generated/cpp/simd/tests/x86_tests
  106. Dynamic section at offset 0x1f6258 contains 32 entries:
  107.   Tag                Type           Name/Value
  108.   0x0000000000000003 (PLTGOT)       0x5f7aa8
  109.   0x0000000000000002 (PLTRELSZ)     4008 (bytes)
  110.   0x0000000000000017 (JMPREL)       0x404160
  111.   0x0000000000000014 (PLTREL)       RELA
  112.   0x0000000000000007 (RELA)         0x4040d0
  113.   0x0000000000000008 (RELASZ)       144 (bytes)
  114.   0x0000000000000009 (RELAENT)      24 (bytes)
  115.   0x0000000000000015 (DEBUG)        0x0
  116.   0x0000000000000006 (SYMTAB)       0x400360
  117.   0x000000000000000b (SYMENT)       24 (bytes)
  118.   0x0000000000000005 (STRTAB)       0x401dd0
  119.   0x000000000000000a (STRSZ)        7087 (bytes)
  120.   0x000000006ffffef5 (GNU_HASH)     0x403980
  121.   0x0000000000000001 (NEEDED)       Shared library: [libm.so.6]
  122.   0x0000000000000001 (NEEDED)       Shared library: [libpthread.so.0]
  123.   0x0000000000000001 (NEEDED)       Shared library: [libdl.so.2]
  124.   0x0000000000000001 (NEEDED)       Shared library: [libgcc_s.so.1]
  125.   0x0000000000000001 (NEEDED)       Shared library: [libc.so.6]
  126.   0x0000000000000001 (NEEDED)       Shared library: [ld-linux-x86-64.so.2]
  127.   0x000000000000000c (INIT)         0x405108
  128.   0x000000000000000d (FINI)         0x578530
  129.   0x000000000000001a (FINI_ARRAY)   0x5eaba0
  130.   0x000000000000001c (FINI_ARRAYSZ) 8 (bytes)
  131.   0x0000000000000019 (INIT_ARRAY)   0x5eaba8
  132.   0x000000000000001b (INIT_ARRAYSZ) 88 (bytes)
  133.   0x000000000000001d (RUNPATH)      Library runpath: [/nix/store/lyl6nysc3i3aqhj6shizjgj0ibnf1pvg-glibc-2.34-210/lib]
  134.   0x000000000000001e (FLAGS)        BIND_NOW
  135.   0x000000006ffffffb (FLAGS_1)      NOW
  136.   0x000000006ffffff0 (VERSYM)       0x403d4c
  137.   0x000000006ffffffe (VERNEED)      0x403f80
  138.   0x000000006fffffff (VERNEEDNUM)   4
  139.   0x0000000000000000 (NULL)         0x0
  140.  
  141. [ armitage watchtower straylight dev ~/src/uv/straylight ] l /nix/store/lyl6nysc3i3aqhj6shizjgj0ibnf1pvg-glibc-2.34-210/lib | rg "(libpthread.so.0|libm.so.6|libdl.so.2|libgcc_s.so.1|libc.so.6|ld-linux-x86-64.so.2)"
  142. .r-xr-xr-x 228k root  1 Jan  1970  ld-linux-x86-64.so.2
  143. .r-xr-xr-x 2.4M root  1 Jan  1970  libc.so.6
  144. lrwxrwxrwx   10 root  1 Jan  1970  libdl.so -> libdl.so.2
  145. .r-xr-xr-x  16k root  1 Jan  1970  libdl.so.2
  146. .r--r--r-- 112k root  1 Jan  1970  libgcc_s.so.1
  147. .r-xr-xr-x 967k root  1 Jan  1970  libm.so.6
  148. lrwxrwxrwx   15 root  1 Jan  1970  libpthread.so -> libpthread.so.0
  149. .r-xr-xr-x  16k root  1 Jan  1970  libpthread.so.0
  150.  
  151. [ armitage watchtower straylight dev ~/src/uv/straylight ] # so our upper limit on savings is like, 4mb * 20 processes (the 21st means we had to have it no matter what), or 80Mb
  152. [ armitage watchtower straylight dev ~/src/uv/straylight ] # let's have a look at the dynamic linking story...
  153.  
  154. [ armitage watchtower straylight dev ~/src/uv/straylight ] nm -gu ./generated/cpp/simd/tests/x86_tests
  155.                  w _ITM_RU1
  156.                  w _ITM_RU8
  157.                  w _ITM_addUserCommitAction
  158.                  w _ITM_deregisterTMCloneTable
  159.                  w _ITM_memcpyRnWt
  160.                  w _ITM_memcpyRtWn
  161.                  w _ITM_registerTMCloneTable
  162.                  U _Unwind_DeleteException
  163.                  U _Unwind_GetDataRelBase
  164.                  U _Unwind_GetIPInfo
  165.                  U _Unwind_GetLanguageSpecificData
  166.                  U _Unwind_GetRegionStart
  167.                  U _Unwind_GetTextRelBase
  168.                  U _Unwind_RaiseException
  169.                  U _Unwind_Resume
  170.                  U _Unwind_Resume_or_Rethrow
  171.                  U _Unwind_SetGR
  172.                  U _Unwind_SetIP
  173.                  w _ZGTtdlPv
  174.                  w _ZGTtnam
  175.  
  176. ... ommitted ...
  177.  
  178.                  U mbsnrtowcs
  179.                  U mbsrtowcs
  180.                  U memchr
  181.                  U memcmp
  182.                  U memcpy
  183.                  U memmove
  184.                  U memset
  185.                  U nanosleep
  186.                  U nextafter
  187.                  U nextafterf
  188.  
  189. ... omitted ...
  190.  
  191.                  U wmemcmp
  192.                  U wmemcpy
  193.                  U wmemmove
  194.                  U wmemset
  195.                  U write
  196.                  U writev
  197. [ armitage watchtower straylight dev ~/src/uv/straylight ] nm -gu ./generated/cpp/simd/tests/x86_tests | wc -l
  198. 175
  199. [ armitage watchtower straylight dev ~/src/uv/straylight ] # 175 symbols brought in by the dynamic linker, that seems kinda low, how many does `glibc` export?
  200. [ armitage watchtower straylight dev ~/src/uv/straylight ] nm /nix/store/lyl6nysc3i3aqhj6shizjgj0ibnf1pvg-glibc-2.34-210/lib/libc.so.6  | wc -l
  201. 8207
  202. [ armitage watchtower straylight dev ~/src/uv/straylight ] # hrm, i'm not using much of that at all...
  203. [ armitage watchtower straylight dev ~/src/uv/straylight ] # i bet my linker can do a much better job packing that into a small number of `TEXT` pages
  204.  
  205. [ armitage watchtower straylight dev ~/src/uv/straylight ] # ok, but that's my program, not going to be many of those running...
  206.  
  207. [ armitage watchtower straylight dev ~/src/uv/straylight ] # most of my processes are `bash`, how many does it use ()?
  208. [ armitage watchtower straylight dev ~/src/uv/straylight ] nm -gu /nix/store/pa9416c0x5qa4r2z3zq701qg8gyr0c73-bash-interactive-5.1-p16/bin/bash | wc -l
  209. 380
  210. [ armitage watchtower straylight dev ~/src/uv/straylight ] # ok so even bash is loading like 4mb of `.so` to get 380/8207 symbols, and the kernel shares those across all 7 bash processes...
  211. [ armitage watchtower straylight dev ~/src/uv/straylight ] # i'm not so sold on this dynamic linking thing...
  212. [ armitage watchtower straylight dev ~/src/uv/straylight ]
  213.  
Advertisement
Add Comment
Please, Sign In to add comment