GNU/Linux >> Linux Esercitazione >  >> Linux

Fuori dagli MTRR all'avvio

Grazie a harrymc, ho scoperto che puoi effettivamente riscrivere /proc/mtrr. Ho inserito quanto segue in /etc/rc.local, riavviato e la mia tabella MTRR era corretta.

echo "disable=7" > /proc/mtrr
echo "disable=6" > /proc/mtrr
echo "disable=5" > /proc/mtrr
echo "disable=4" > /proc/mtrr
echo "disable=3" > /proc/mtrr
echo "disable=2" > /proc/mtrr
echo "disable=1" > /proc/mtrr
echo "disable=0" > /proc/mtrr
echo "base=0x000000000 size=0x40000000 type=write-back" > /proc/mtrr
echo "base=0x03f500000 size=0x00100000 type=uncachable" > /proc/mtrr
echo "base=0x03f600000 size=0x00200000 type=uncachable" > /proc/mtrr
echo "base=0x03f800000 size=0x00800000 type=write-back" > /proc/mtrr
echo "base=0x040000000 size=0x10000000 type=write-combining" > /proc/mtrr

Inoltre, dopo aver parlato con alcune persone coinvolte nello sviluppo del kernel, sono stato informato che CONFIG_MTRR_SANITIZER è stato rotto per gli ultimi kernel, ecco perché ha funzionato per altri in passato.


Citando la risposta alla tua stessa domanda sui forum di Arch Linux :

Da dmesg, è facile vedere che si esaurisce mtrr durante l'inizializzazione di i915/drmgraphics. Non ho esperienza specifica con questo problema, ma ecco i miei suggerimenti:

  1. Avvia con 'mtrr_spare_reg_nr=2' e potresti aver bisogno anche di 'enable_mtrr_cleanup=1(aggiungi alla riga del kernel in/boot/grub/menu.lst).
  2. Prova il kernel 2.6.38 da [testing].

Dall'aspetto del tuo /proc/mtrr, la tua CPU ATOM ha solo 8 MTRR e sono davvero tutti esauriti. Tuttavia, il modo in cui la memoria viene suddivisa in frammenti così piccoli è sconcertante. In generale, un tale problema può essere causato da :

  • Il BIOS:cerca i parametri che determinano l'allocazione della memoria per i dispositivi.
  • La scheda grafica che potrebbe avere memoria condivisa con la CPU e che il BIOS potrebbe far sì che venga allocata brutalmente nel mezzo della memoria.
  • Il driver della scheda grafica:cerca la versione più recente.
  • Un kernel mal configurato.

Il più grande puzzle che posso vedere è che /proc/mtrr dice che hai 8 GB. Ma in /proc/cpuinfo la voce 'flags' non contiene 'lm', che secondo le FAQ di Arch64 è necessario affinché il processore sia compatibile con x86_64. Le FAQ dicono inoltre :

Nota che Arch32 non supporta più di 3 GB di RAM per impostazione predefinita:devi rivolgerti ad Arch64 se ne hai di più.

Quindi sembra che tu abbia Arch32 e 8 GB di RAM, cosa che la documentazione contraddice.
Potresti forse gettare un po' di luce su questo enigma?


Linux
  1. Come ottengo il percorso di un processo in Unix/Linux

  2. Quando dovrei usare /dev/shm/ e quando dovrei usare /tmp/?

  3. Ridimensionamento della partizione di avvio

  4. Come scoprire da quale cartella è in esecuzione un processo?

  5. Perché la partizione di avvio ext2 da 100 MB è consigliata per Linux?

Bash =~ Regex e HTTPS://regex101.com/?

Linux – Collegamento di /proc/mnt a /proc/mounts?

Linux – /sbin/init non esiste?

/proc/cpuinfo e /proc/meminfo in Linux

Comprendere i file /proc/mounts, /etc/mtab e /proc/partitions

/proc/[pid]/pagemaps e /proc/[pid]/maps | Linux