나는 swappiness를 100으로 변경하고 malloc() 코드를 사용하여 내 rhel 시스템에서 swappi를 0으로 설정하려고 시도했지만 도움이 되지 않은 것 같습니다. 시스템 메모리 할당은 다음과 같습니다.
-bash-4.1$ cat /proc/meminfo
MemTotal: 15331636 kB
MemFree: 14552168 kB
SwapTotal: 15826924 kB
SwapFree: 15657580 kB
malloc 프로그램은 커널이 종료되기 전에 수천 번의 반복을 실행했습니다. 그러나 커널 로그 파일에는 명시적인 "프로세스 종료"나 다른 내용이 표시되지 않습니다.
dmesg
이 코드 조각을 실행한 후 다음 명령을 사용하여 상태를 찾습니다.
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main(int argc, char** argv) {
int max = -1;
int mb = 0;
char* buffer;
if(argc > 1)
max = atoi(argv[1]);
while((buffer=malloc(1024*1024*1024)) != NULL && mb != max) {
memset(buffer, 0, 1024*1024);
mb++;
printf("Allocated %d MB\n", mb);
}
return 0;
}
스왑을 매우 낮은 값이나 0으로 설정하는 더 좋은 방법이 있습니까?
답변1
다음 명령(루트로 실행)은 모든 스왑 공간을 비활성화하고 스왑 공간의 모든 것을 비활성화하기 전에 실제 RAM으로 이동합니다. 그러나 교체하지 않을 때보다 더 많은 메모리가 필요하게 되면 커널이 자체적으로 프로세스를 종료하는 것부터 본격적인 커널 패닉에 이르기까지 다양한 문제에 직면하게 될 수 있으므로 주의하십시오.
swapoff