Linux의 특정 프로그램에 설치된 RAM의 양을 가짜로 만드는 방법은 무엇입니까?

Linux의 특정 프로그램에 설치된 RAM의 양을 가짜로 만드는 방법은 무엇입니까?

나는 뛰고있어본케내 오래된 넷북에는 온보드 RAM이 2GB밖에 없었는데, 이는 특정 작업을 실행하기에 충분하지 않았습니다. 예를 들어, 그들은 장치의 RAM이 얼마나 낮은지 알기 때문에 이를 거부합니다.

내 zRAM에는 backing_dev 및 zstd 알고리즘이 활성화되어 있으므로 실제로 메모리 부족은 전혀 문제가 되지 않으며 특히 어려운 상황에서도 항상 사용할 수 있습니다 systemd-run --scope -p(+16GB RAM이 필요한 프로그램을 성공적으로 실행하는 데 이를 사용했습니다).

더 까다로운 작업을 실행할 수 있도록 BOINC가 내 노트북에 2GB 이상의 RAM이 설치되어 있다고 생각하게 하려면 어떻게 해야 합니까?

답변1

가짜를 만들고 meminfo원본 위에 설치하십시오 /proc/meminfo.

$ mkdir fake-meminfo && cd fake-meminfo
$ cp /proc/meminfo .
$ chmod +w meminfo
$ sed -Ei 's,^MemTotal:        [0-9]+ kB,MemTotal:        8839012 kB,' meminfo   # replace 8839012 with an amount of RAM you want to pretend you have
$ free -m  # check how much RAM you have now
              total        used        free      shared  buff/cache   available
Mem:           7655        1586        3770         200        2298        5373
$ sudo mount --bind meminfo /proc/meminfo                                 
$ free -m  # check how much RAM you pretend to have after replacing /proc/meminfo
              total        used        free      shared  buff/cache   available
Mem:           8631        2531        3800         201        2299        5403
$ sudo umount /proc/meminfo # restore an original /proc/meminfo
$ free -m
              total        used        free      shared  buff/cache   available
Mem:           7655        1549        3806         200        2299        5410

시스템의 나머지 부분과 격리된 설치 네임스페이스에서 위 명령을 실행할 수도 있습니다. 인용하다: 가짜 /proc/meminfo에서 복구

답변2

잠시 생각한 끝에 나는 이렇게 했습니다.

다음으로 시작됨nano /proc/meminfo

MemTotal, MemFree, MemAvailable를 원하는 값 SwapTotal으로 변경 SwapFree하고 ~./meminfo에 저장합니다.

사용자에게 boinc 비밀번호 sudo passwd boinc와 쉘을 제공하고 sudo nano /etc/passwd행을 찾아 부분을 다음으로 boinc:x:129:141:BOINC core client,,,:/var/lib/boinc-client:/usr/sbin/nologin변경하십시오./usr/sbin/nologin/bin/bash

그런 다음 여기 예제를 사용하여 RAM 정보를 위조했습니다.가짜 /proc/meminfo에서 복구

unshare -m bash    #unshares mount spaces, for specific program "bash" only (and for whatever you want to launch from it)
mount --bind ~./meminfo /proc/meminfo      #substitutes real meminfo data with fake one

그리고 free작동하는지 확인하세요

          total        used        free         shared     buff/cache  available
Mem:     2321456       21456     2300000           0           0     2300000
Swap:     5000000     1000000     4000000

그런 다음 사용자로 전환 su - boinc하고 프로그램을 시작하십시오.

boinc --check_all_logins --redirectio --dir /var/lib/boinc-client

그런 다음 평소와 같이 BOINC 관리자를 시작할 수 있습니다

완전히 성공했습니다. 이전에 실행을 거부했던 작업이 다운로드를 시작한 후 아무런 문제 없이 실행되었습니다.

관련 정보