Общие библиотеки в контейнерах Docker - PullRequest
0 голосов
/ 25 марта 2020

Цель: доказать, что совместно используемые библиотеки в контейнерах Docker совместно используют память.

Я пытался читать данные памяти, используя pmap -X "pid", который дает полностью расширенный обзор. Настройка - довольно простая программа, которая работает на бесконечном l oop и в этом l oop использует библиотеку GSL для вычисления значения. Я совершенно невежествен, когда речь заходит о терминологии памяти, и вижу несколько противоречивых утверждений при просмотре нескольких ответов.

Предположение состоит в том, что два контейнера, использующие одни и те же общие библиотеки, будут совместно использовать это в памяти. Я использую docker

Server Version: 18.09.7
Storage Driver: overlay2
 Backing Filesystem: extfs
 Supports d_type: true
 Native Overlay Diff: false

При запуске одного контейнера это вывод pmap -X pid возвращает

29537:   ./a.out
         Address Perm   Offset Device   Inode  Size  Rss  Pss Referenced Anonymous Shared_Hugetlb Private_Hugetlb Swap SwapPss Locked Mapping
        00400000 r-xp 00000000  08:01 2070672     4    4    4          4         0              0               0    0       0      0 a.out
        00600000 r--p 00000000  08:01 2070672     4    4    4          4         4              0               0    0       0      0 a.out
        00601000 rw-p 00001000  08:01 2070672     4    4    4          4         4              0               0    0       0      0 a.out
    7f1733f16000 r-xp 00000000  08:01 1794991  1044  244  244        240         0              0               0    0       0      0 libm-2.19.so
    7f173401b000 ---p 00105000  08:01 1794991  2044    0    0          0         0              0               0    0       0      0 libm-2.19.so
    7f173421a000 r--p 00104000  08:01 1794991     4    4    4          4         4              0               0    0       0      0 libm-2.19.so
    7f173421b000 rw-p 00105000  08:01 1794991     4    4    4          4         4              0               0    0       0      0 libm-2.19.so
    7f173421c000 r-xp 00000000  08:01 1794953  1768  868  462        820         0              0               0    0       0      0 libc-2.19.so
    7f17343d6000 ---p 001ba000  08:01 1794953  2048    0    0          0         0              0               0    0       0      0 libc-2.19.so
    7f17345d6000 r--p 001ba000  08:01 1794953    16   16   16         16        16              0               0    0       0      0 libc-2.19.so
    7f17345da000 rw-p 001be000  08:01 1794953     8    8    8          8         8              0               0    0       0      0 libc-2.19.so
    7f17345dc000 rw-p 00000000  00:00       0    20   12   12         12        12              0               0    0       0      0
    7f17345e1000 r-xp 00000000  08:01 2064911   240   44   44         40         0              0               0    0       0      0 libgslcblas.so.0.0.0
    7f173461d000 ---p 0003c000  08:01 2064911  2044    0    0          0         0              0               0    0       0      0 libgslcblas.so.0.0.0
    7f173481c000 r--p 0003b000  08:01 2064911     4    4    4          4         4              0               0    0       0      0 libgslcblas.so.0.0.0
    7f173481d000 rw-p 0003c000  08:01 2064911     4    4    4          4         4              0               0    0       0      0 libgslcblas.so.0.0.0
    7f173481e000 r-xp 00000000  08:01 2064906  2372  404  404        400         0              0               0    0       0      0 libgsl.so.19.3.0
    7f1734a6f000 ---p 00251000  08:01 2064906  2048    0    0          0         0              0               0    0       0      0 libgsl.so.19.3.0
    7f1734c6f000 r--p 00251000  08:01 2064906    12   12   12         12        12              0               0    0       0      0 libgsl.so.19.3.0
    7f1734c72000 rw-p 00254000  08:01 2064906    68   68   68         68        52              0               0    0       0      0 libgsl.so.19.3.0
    7f1734c83000 r-xp 00000000  08:01 1794933   140  136   70        136         0              0               0    0       0      0 ld-2.19.so
    7f1734e9b000 rw-p 00000000  00:00       0    16   16   16         16        16              0               0    0       0      0
    7f1734ea2000 rw-p 00000000  00:00       0    12   12   12         12        12              0               0    0       0      0
    7f1734ea5000 r--p 00022000  08:01 1794933     4    4    4          4         4              0               0    0       0      0 ld-2.19.so
    7f1734ea6000 rw-p 00023000  08:01 1794933     4    4    4          4         4              0               0    0       0      0 ld-2.19.so
    7f1734ea7000 rw-p 00000000  00:00       0     4    4    4          4         4              0               0    0       0      0
    7ffd80a33000 rw-p 00000000  00:00       0   136   12   12         12        12              0               0    0       0      0 [stack]
    7ffd80ae4000 r--p 00000000  00:00       0     8    0    0          0         0              0               0    0       0      0 [vvar]
    7ffd80ae6000 r-xp 00000000  00:00       0     8    4    0          4         0              0               0    0       0      0 [vdso]
ffffffffff600000 r-xp 00000000  00:00       0     4    0    0          0         0              0               0    0       0      0 [vsyscall]
                                              ===== ==== ==== ========== ========= ============== =============== ==== ======= ======
                                              14096 1896 1420       1836       176              0               0    0       0      0 KB 

Из этого, как я могу определить количество библиотек, которые делятся? Мне более или менее необходимо знать, какие столбцы имеют для этого значение.

Ниже вы можете увидеть вывод, когда я снова запустил тот же контейнер.

29537:   ./a.out
         Address Perm   Offset Device   Inode  Size  Rss Pss Referenced Anonymous Shared_Hugetlb Private_Hugetlb Swap SwapPss Locked Mapping
        00400000 r-xp 00000000  08:01 2070672     4    4   2          4         0              0               0    0       0      0 a.out
        00600000 r--p 00000000  08:01 2070672     4    4   4          4         4              0               0    0       0      0 a.out
        00601000 rw-p 00001000  08:01 2070672     4    4   4          4         4              0               0    0       0      0 a.out
    7f1733f16000 r-xp 00000000  08:01 1794991  1044  244 146        244         0              0               0    0       0      0 libm-2.19.so
    7f173401b000 ---p 00105000  08:01 1794991  2044    0   0          0         0              0               0    0       0      0 libm-2.19.so
    7f173421a000 r--p 00104000  08:01 1794991     4    4   4          4         4              0               0    0       0      0 libm-2.19.so
    7f173421b000 rw-p 00105000  08:01 1794991     4    4   4          4         4              0               0    0       0      0 libm-2.19.so
    7f173421c000 r-xp 00000000  08:01 1794953  1768  868 235        868         0              0               0    0       0      0 libc-2.19.so
    7f17343d6000 ---p 001ba000  08:01 1794953  2048    0   0          0         0              0               0    0       0      0 libc-2.19.so
    7f17345d6000 r--p 001ba000  08:01 1794953    16   16  16         16        16              0               0    0       0      0 libc-2.19.so
    7f17345da000 rw-p 001be000  08:01 1794953     8    8   8          8         8              0               0    0       0      0 libc-2.19.so
    7f17345dc000 rw-p 00000000  00:00       0    20   12  12         12        12              0               0    0       0      0
    7f17345e1000 r-xp 00000000  08:01 2064911   240   44  36         44         0              0               0    0       0      0 libgslcblas.so.0.0.0
    7f173461d000 ---p 0003c000  08:01 2064911  2044    0   0          0         0              0               0    0       0      0 libgslcblas.so.0.0.0
    7f173481c000 r--p 0003b000  08:01 2064911     4    4   4          4         4              0               0    0       0      0 libgslcblas.so.0.0.0
    7f173481d000 rw-p 0003c000  08:01 2064911     4    4   4          4         4              0               0    0       0      0 libgslcblas.so.0.0.0
    7f173481e000 r-xp 00000000  08:01 2064906  2372  404 204        404         0              0               0    0       0      0 libgsl.so.19.3.0
    7f1734a6f000 ---p 00251000  08:01 2064906  2048    0   0          0         0              0               0    0       0      0 libgsl.so.19.3.0
    7f1734c6f000 r--p 00251000  08:01 2064906    12   12  12         12        12              0               0    0       0      0 libgsl.so.19.3.0
    7f1734c72000 rw-p 00254000  08:01 2064906    68   68  60         68        52              0               0    0       0      0 libgsl.so.19.3.0
    7f1734c83000 r-xp 00000000  08:01 1794933   140  140  39        140         0              0               0    0       0      0 ld-2.19.so
    7f1734e9b000 rw-p 00000000  00:00       0    16   16  16         16        16              0               0    0       0      0
    7f1734ea2000 rw-p 00000000  00:00       0    12   12  12         12        12              0               0    0       0      0
    7f1734ea5000 r--p 00022000  08:01 1794933     4    4   4          4         4              0               0    0       0      0 ld-2.19.so
    7f1734ea6000 rw-p 00023000  08:01 1794933     4    4   4          4         4              0               0    0       0      0 ld-2.19.so
    7f1734ea7000 rw-p 00000000  00:00       0     4    4   4          4         4              0               0    0       0      0
    7ffd80a33000 rw-p 00000000  00:00       0   136   12  12         12        12              0               0    0       0      0 [stack]
    7ffd80ae4000 r--p 00000000  00:00       0     8    0   0          0         0              0               0    0       0      0 [vvar]
    7ffd80ae6000 r-xp 00000000  00:00       0     8    4   0          4         0              0               0    0       0      0 [vdso]
ffffffffff600000 r-xp 00000000  00:00       0     4    0   0          0         0              0               0    0       0      0 [vsyscall]
                                              ===== ==== === ========== ========= ============== =============== ==== ======= ======
                                              14096 1900 846       1900       176              0               0    0       0      0 KB
29408:   ./a.out
         Address Perm   Offset Device   Inode  Size  Rss  Pss Referenced Anonymous Shared_Hugetlb Private_Hugetlb Swap SwapPss Locked Mapping
        00400000 r-xp 00000000  08:01 2070672     4    4    2          4         0              0               0    0       0      0 a.out
        00600000 r--p 00000000  08:01 2070672     4    4    4          4         4              0               0    0       0      0 a.out
        00601000 rw-p 00001000  08:01 2070672     4    4    4          4         4              0               0    0       0      0 a.out
    7f35beae2000 r-xp 00000000  08:01 1794991  1044  212  114        212         0              0               0    0       0      0 libm-2.19.so
    7f35bebe7000 ---p 00105000  08:01 1794991  2044    0    0          0         0              0               0    0       0      0 libm-2.19.so
    7f35bede6000 r--p 00104000  08:01 1794991     4    4    4          4         4              0               0    0       0      0 libm-2.19.so
    7f35bede7000 rw-p 00105000  08:01 1794991     4    4    4          4         4              0               0    0       0      0 libm-2.19.so
    7f35bede8000 r-xp 00000000  08:01 1794953  1768  964  300        964         0              0               0    0       0      0 libc-2.19.so
    7f35befa2000 ---p 001ba000  08:01 1794953  2048    0    0          0         0              0               0    0       0      0 libc-2.19.so
    7f35bf1a2000 r--p 001ba000  08:01 1794953    16   16   16         16        16              0               0    0       0      0 libc-2.19.so
    7f35bf1a6000 rw-p 001be000  08:01 1794953     8    8    8          8         8              0               0    0       0      0 libc-2.19.so
    7f35bf1a8000 rw-p 00000000  00:00       0    20   12   12         12        12              0               0    0       0      0
    7f35bf1ad000 r-xp 00000000  08:01 2064911   240   16    8         16         0              0               0    0       0      0 libgslcblas.so.0.0.0
    7f35bf1e9000 ---p 0003c000  08:01 2064911  2044    0    0          0         0              0               0    0       0      0 libgslcblas.so.0.0.0
    7f35bf3e8000 r--p 0003b000  08:01 2064911     4    4    4          4         4              0               0    0       0      0 libgslcblas.so.0.0.0
    7f35bf3e9000 rw-p 0003c000  08:01 2064911     4    4    4          4         4              0               0    0       0      0 libgslcblas.so.0.0.0
    7f35bf3ea000 r-xp 00000000  08:01 2064906  2372  416  216        416         0              0               0    0       0      0 libgsl.so.19.3.0
    7f35bf63b000 ---p 00251000  08:01 2064906  2048    0    0          0         0              0               0    0       0      0 libgsl.so.19.3.0
    7f35bf83b000 r--p 00251000  08:01 2064906    12   12   12         12        12              0               0    0       0      0 libgsl.so.19.3.0
    7f35bf83e000 rw-p 00254000  08:01 2064906    68   68   60         68        52              0               0    0       0      0 libgsl.so.19.3.0
    7f35bf84f000 r-xp 00000000  08:01 1794933   140  132   33        132         0              0               0    0       0      0 ld-2.19.so
    7f35bfa67000 rw-p 00000000  00:00       0    16   16   16         16        16              0               0    0       0      0
    7f35bfa6e000 rw-p 00000000  00:00       0    12   12   12         12        12              0               0    0       0      0
    7f35bfa71000 r--p 00022000  08:01 1794933     4    4    4          4         4              0               0    0       0      0 ld-2.19.so
    7f35bfa72000 rw-p 00023000  08:01 1794933     4    4    4          4         4              0               0    0       0      0 ld-2.19.so
    7f35bfa73000 rw-p 00000000  00:00       0     4    4    4          4         4              0               0    0       0      0
    7ffe70ef1000 rw-p 00000000  00:00       0   136   12   12         12        12              0               0    0       0      0 [stack]
    7ffe70fd0000 r--p 00000000  00:00       0     8    0    0          0         0              0               0    0       0      0 [vvar]
    7ffe70fd2000 r-xp 00000000  00:00       0     8    4    0          4         0              0               0    0       0      0 [vdso]
ffffffffff600000 r-xp 00000000  00:00       0     4    0    0          0         0              0               0    0       0      0 [vsyscall]
                                              ===== ==== ==== ========== ========= ============== =============== ==== ======= ======
                                              28192 3840 1703       3840       352              0               0    0       0      0 KB
...