%20%EB%A9%94%EB%AA%A8%EB%A6%AC%EB%A5%BC%20%22%ED%95%AB%20%EC%96%B8%ED%94%8C%EB%9F%AC%EA%B7%B8%22%ED%95%A0%20%EC%88%98%20%EC%9E%88%EB%82%98%EC%9A%94%3F.png)
이것이 내가 시도한 것입니다:
sudo zsh -c 'echo offline >/sys/devices/system/memory/memory109/state'`
다음과 같은 오류가 발생했습니다.
zsh:echo:1: write error: device or resource busy
오프라인으로 전환하려는 메모리 모듈이 비어 있는지 먼저 확인해야 합니까?
그렇다면 어떻게 그렇게 할 수 있습니까?
배경:
저는 VMWare에 의해 게스트로 가상화된 Ubuntu 기반 배포판을 실행하고 있습니다.
게스트 시스템의 메모리 사용량을 줄여 게스트를 다시 시작하지 않고도 호스트에서 더 많은 메모리를 사용할 수 있기를 바랍니다.
그 중 하나라도 중요할 수 있는 경우.
2016-09-29 편집:
이론적으로는 가능해야 한다는 @Gilles의 의견과 링크에 힘입어 memory109
움직일 수 없는 페이지가 일부 포함되어 있을 수도 있다는 생각을 갖게 되었습니다. 그래서 다른 모듈(?)에도 시도해 보기로 했습니다.
처음에는 다른 몇 가지를 직접 시도해 보았습니다. 그러나 그것들은 성공하지 못했기 때문에 나는 그것들을 모두 시도해 볼 것이라고 생각했습니다.
for i in /sys/devices/system/memory/memory*/state;
do echo -n "Trying "$i" \t";
sudo zsh -c "echo offline > $i";
done
주의: 위의 스크립트는 컴퓨터에서 성공할 수 있으므로 주의하세요. 컴퓨터에서 성공할 수 있으므로 메모리 전체가 오프라인 상태가 되어 시스템이 중단되거나 중단될 수 있습니다.
이것이 내가 가장 얻은 것입니다:
...
Trying /sys/devices/system/memory/memory44/state zsh:echo:1: write error: device or resource busy
Trying /sys/devices/system/memory/memory45/state zsh:echo:1: write error: device or resource busy
Trying /sys/devices/system/memory/memory46/state zsh:echo:1: write error: device or resource busy
...
단 두 가지 예외를 제외하고:
Trying /sys/devices/system/memory/memory0/state zsh:echo:1: write error: invalid argument
...
Trying /sys/devices/system/memory/memory86/state zsh:echo:1: write error: invalid argument
...
이것이 작동하지 않는 이유에 대한 아이디어가 있습니까?
답변1
대부분의 경우 메모리 블록에는 이동할 수 없는 페이지가 포함되어 있으므로 오프라인일 수 없습니다. "이동식" sysfs 속성을 확인하세요.
일반적인 x86-64 시스템(가상화 또는 베어 메탈)을 실행하는 경우 모든 커널 할당이 이동할 수 없기 때문에 제거 가능한 블록이 없을 가능성이 높습니다. 커널을 RAM의 일부로 제한하려면 "kernelcore=" 매개변수를 전달하세요. 그 후에 일부 제거 가능한 메모리 블록이 표시되어야 하며 'online' 속성에 '0'을 쓰거나 'state' 속성에 'offline'을 써서 오프라인으로 설정할 수 있습니다.
답변2
커널에서는 불가능하다고 생각합니다기본특징. 커널은 핫플러그만 지원하고 언플러그를 지원합니다. 이를 수행하는 이상한 방법이 있을 수 있지만 기술적으로는 좋지 않은 것 같습니다. 적어도 이것에는 문제가 거의 없습니다.