GNU/Linux >> Tutoriels Linux >  >> Linux

Comment puis-je simuler la quantité de RAM installée pour un programme spécifique sous Linux ?

Créer un faux meminfo et montez-le sur un /proc/meminfo d'origine :

$ 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

Vous pouvez également exécuter les commandes ci-dessus dans un espace de noms de montage isolé du reste du système. Références :Récupérer après avoir falsifié /proc/meminfo


Après réflexion, j'ai fait ceci :

Commencé par nano /proc/meminfo

MemTotal modifié , MemFree , MemAvailable , SwapTotal et SwapFree aux valeurs souhaitées et enregistrées dans ~./meminfo

A donné à l'utilisateur le mot de passe boinc sudo passwd boinc et shell -- sudo nano /etc/passwd , trouvé la ligne boinc:x:129:141:BOINC core client,,,:/var/lib/boinc-client:/usr/sbin/nologin et changé le /usr/sbin/nologin partie en /bin/bash

Ensuite, j'ai truqué les informations de RAM en utilisant des exemples d'ici

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

et confirmé avec free que cela a fonctionné

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

Puis passé à l'utilisateur su - boinc et vient de lancer le programme avec

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

BOINC Manager peut alors être lancé comme d'habitude

Succès total, tâches qui refusaient auparavant de s'exécuter, ont commencé à se télécharger puis se sont exécutées sans complications


Linux
  1. Comment obtenir le chemin d'un processus sous Unix / Linux

  2. Comment définir l'ID de processus sous Linux pour un programme spécifique

  3. Comment puis-je connaître la mémoire physique totale (RAM) de ma machine Linux pouvant être analysée par un script shell ?

  4. Comment puis-je modifier la quantité et la taille des disques RAM Linux (/dev/ram0 - /dev/ram15) ?

  5. Comment définir la swapiness par processus pour Linux?

Comment trouver la version de Redhat Linux installée

Fichiers /proc/cpuinfo et /proc/meminfo sous Linux

Comprendre les fichiers /proc/mounts, /etc/mtab et /proc/partitions

/proc/[pid]/pagemaps et /proc/[pid]/maps | linux

comment connaître le numéro d'interruption/GPIO pour une broche spécifique sous Linux

Comment la clé Magic SysRq peut-elle être dangereuse pour les utilisateurs Linux ?