Есть ли проблема с блокировкой, когда огромные объемы 1G возвращаются так медленно?

#linux #numa #mlock

Вопрос:

Вопрос:

Я сталкиваюсь с проблемой API » mlock ()». первая загрузка происходит быстро, когда блокируется память из»/sys/устройства/система/узел/узел 0″, но на узле 1 она выполняется слишком медленно, для возврата требуется более 3 секунд. 1637788891.109283 ( 7.153795) set_mempolicy(MPOL_DEFAULT, NULL, 0) = 0 lt;0.000052gt;

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

 1637788883.562435 (  0.000263) openat(AT_FDCWD, "/sys/devices/system/node/online", O_RDONLY) = 4 lt;0.000033gt; 1637788883.562542 (  0.000108) read(4, "0-1n", 4096) = 4 lt;0.000036gt; 1637788883.562647 (  0.000104) close(4) = 0 lt;0.000026gt; 1637788883.562730 (  0.000082) openat(AT_FDCWD, "/sys/devices/system/node/has_memory", O_RDONLY) = 4 lt;0.000038gt; 1637788883.562823 (  0.000093) read(4, "0-1n", 4096) = 4 lt;0.000027gt; 1637788883.562905 (  0.000082) close(4) = 0 lt;0.000032gt; 1637788883.563036 (  0.000129) stat("/sys/devices/system/node/node0", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0 lt;0.000050gt; 1637788883.563149 (  0.000114) openat(AT_FDCWD, "/sys/devices/system/node/node0/hugepages/hugepages-1048576kB/free_hugepages", O_RDONLY) = 4 lt;0.000031gt; 1637788883.563233 (  0.000083) read(4, "20n", 4096) = 3 lt;0.000027gt; 1637788883.563313 (  0.000081) close(4) = 0 lt;0.000028gt; 1637788883.563389 (  0.000074) set_mempolicy(MPOL_BIND, [0x0000000000000001, 000000000000000000, 000000000000000000, 000000000000000000, 000000000000000000, 000000000000000000, 000000000000000000, 000000000000000000, 000000000000000000, 000000000000000000, 000000000000000000, 000000000000000000, 000000000000000000, 000000000000000000, 000000000000000000, 000000000000000000], 1025) = 0 lt;0.000029gt; 1637788883.563494 (  0.000105) memfd_create("buffers-numa-0", MFD_HUGETLB) = 4 lt;0.000040gt; 1637788883.563581 (  0.000087) ftruncate(4, 1073741824) = 0 lt;0.000035gt; 1637788883.563676 (  0.000093) mmap(0x1000000000, 1073741824, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 4, 0) = 0x1000000000 lt;0.000046gt; 1637788883.563783 (  0.000107) mlock(0x1000000000, 1073741824) = 0 lt;0.205897gt; 1637788883.921276 (  0.357521) set_mempolicy(MPOL_DEFAULT, NULL, 0) = 0 lt;0.000021gt; 1637788883.921386 (  0.000081) move_pages(0, 1, [0x1000000000], NULL, [0], 0) = 0 lt;0.000040gt; 1637788883.921539 (  0.000159) openat(AT_FDCWD, "/proc/self/pagemap", O_RDONLY) = 5 lt;0.000075gt; 1637788883.921712 (  0.000166) lseek(5, 134217728, SEEK_SET) = 134217728 lt;0.000028gt; 1637788883.921792 (  0.000079) read(5, "|200241", 8) = 8 lt;0.000050gt; 1637788883.921881 (  0.000089) close(5) = 0 lt;0.000034gt; 1637788883.954743 (  0.032867) stat("/sys/devices/system/node/node1", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0 lt;0.000026gt; 1637788883.954838 (  0.000093) openat(AT_FDCWD, "/sys/devices/system/node/node1/hugepages/hugepages-1048576kB/free_hugepages", O_RDONLY) = 5 lt;0.000024gt; 1637788883.954925 (  0.000087) read(5, "20n", 4096) = 3 lt;0.000023gt; 1637788883.955014 (  0.000089) close(5) = 0 lt;0.000081gt; 1637788883.955188 (  0.000168) set_mempolicy(MPOL_BIND, [0x0000000000000002, 000000000000000000, 000000000000000000, 000000000000000000, 000000000000000000, 000000000000000000, 000000000000000000, 000000000000000000, 000000000000000000, 000000000000000000, 000000000000000000, 000000000000000000, 000000000000000000, 000000000000000000, 000000000000000000, 000000000000000000], 1025) = 0 lt;0.000034gt; 1637788883.955297 (  0.000108) memfd_create("buffers-numa-1", MFD_HUGETLB) = 5 lt;0.000030gt; 1637788883.955375 (  0.000078) ftruncate(5, 1073741824) = 0 lt;0.000046gt; 1637788883.955461 (  0.000085) mmap(0x1040000000, 1073741824, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 5, 0) = 0x1040000000 lt;0.000036gt; 1637788883.955539 (  0.000078) mlock(0x1040000000, 1073741824) = 0 lt;3.520771gt; **1637788891.109283 (  7.153795) set_mempolicy(MPOL_DEFAULT, NULL, 0) = 0 lt;0.000052gt;** 1637788891.109605 (  0.000271) move_pages(0, 1, [0x1040000000], NULL, [1], 0) = 0 lt;0.000057gt; 1637788891.109911 (  0.000312) openat(AT_FDCWD, "/proc/self/pagemap", O_RDONLY) = 6 lt;0.000125gt; 1637788891.110194 (  0.000276) lseek(6, 134217728, SEEK_SET) = 134217728 lt;0.000028gt; 1637788891.110299 (  0.000104) read(6, "|200241", 8) = 8 lt;0.000048gt; 1637788891.110416 (  0.000116) lseek(6, 136314880, SEEK_SET) = 136314880 lt;0.000017gt; 1637788891.110494 (  0.000078) read(6, "@1200241", 8) = 8 lt;0.000046gt;  

Комментарии:

1. Измеряли ли вы активность диска за это время?

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