Является ли madvise(*, *, MADV_DONTNEED) чисто рекомендательным? Я пробовал сканировать /proc/self/maps и вызывать на них madvise(addr, size, MADV_DONTNEED):
Есть ли простой способ определить (из /proc/self/maps, /proc/self/smaps или иначе), какие сегменты памяти принадлежат процессу разрешено ли вызывать madvise(*, *, MADV_DONTNEED)?
Является ли madvise(*, *, MADV_DONTNEED) чисто рекомендательным? Я пробовал сканировать /proc/self/maps и вызывать на них madvise(addr, size, MADV_DONTNEED): [code]#include #include
int main(void) { FILE *fp; char line[1024];
fp = fopen("/proc/self/maps", "r"); if (fp == NULL) { perror("Failed to open maps file"); return 1; }
while (fgets(line, sizeof(line), fp)) { char addr[32], perms[8], offset[32], dev[32], inode[32], path[256]; unsigned long start, end;
int ret = madvise((void*)start, end - start, MADV_DONTNEED); if(ret == 0) printf(" OK\n"); else printf(" Error\n"); fflush(stdout); }
fclose(fp); } [/code] Но это печатает: [code] OK OK OK OK Segmentation fault [/code] Есть ли простой способ определить (из /proc/self/maps, /proc/self/smaps или иначе), какие сегменты памяти принадлежат процессу разрешено ли вызывать madvise(*, *, MADV_DONTNEED)?
Мой вопрос основан на решении, предложенном для аналогичного вопроса.
Предположим, у меня есть произвольный виртуальный адрес. Решение просит попробовать написать в «/dev/null» с этим виртуальным адресом в качестве входного буфера. Если адрес не...
У меня есть веб-сервер Node.js, созданный с помощью Express.js, и я пытаюсь оптимизировать использование памяти и сборщика мусора V8. Насколько я понимаю, увеличение размера кучи позволяет выделить больше памяти перед запуском сборки мусора (GC),...
Я пытаюсь соединить два разных файла Python с помощью «сокета».
Чтобы разрешить передачу данных из клиентского файла в серверный, после запуска на сервере мне также нужно запустить его. на КДМ; после этого я смогу распечатать данные клиента в файле...