Här finns tips och guider för Ubuntu.

onsdag 8 april 2009

Hur man kör sin Firefoxprofil från RAM-minnet istället för från hårddisken


OBS: Denna guide är testat i Ubuntu 9.04 Jaunty Jackalope och Firefox version 3.0.8. Om guiden inte fungerar i nyare versioner av Ubuntu/Firefox vänligen skicka epost till mig så att jag kan uppdaterar guiden.

Det är viktigt att ni kontrollerar de olika stegen i guiden. Var noggranna med att döpa filerna/mapparna vi skapar till rätt namn och att innehållet i filerna överensstämmer med ditt system. Har du riktigt otur kan hela din Firefoxprofil försvinna.

Om du vill få ut så mycket som möjligt av denna guide behöver du läsa artikeln The secrets of about:config och genomföra de rekommenderade förändringarna som beskrivs i artikeln.

Tidigare har jag skrivit om fördelarna med att placera Firefox cache i RAM-minnet istället för att använda datorns hårddisk.
För att minimera diskaktiviteten ytterligare och på köpet få med fördelar som snabbare uppstart, omedelbara resultat när du gör sökningar i adressfältet och mycket bättre respons överhuvudtaget kan man placera hela sin Firefoxprofil i RAM-minnet.
Firefox använder SQLite för att hålla ordning på den mesta informationen den behandlar. Nackdelen med SQLite tillsammans med Firefox är att du får mycket I/O (input/output ) aktiviteter eftersom det sker backupskrivningar ofta. Detta resulterar i att Firefox blir segt och slutar svara. Efter en stund kommer Firefox igång igen och man tänker inte så mycket mer på det eftersom man är så van vid detta beteende med Firefox 3 (iaf jag).
För er som har långsamma SSD-hårddiskar så märks detta fenomen väldigt tydligt. Men även ni som har stationära datorer med 7200 rpm diskar har säkerligen stött på fenomenet ett flertal gånger.

Genom att placera din Firefoxprofil i datorns RAM-minne försvinner problemet och Firefox blir bra mycket bättre. Detta kommer märkas tydligt och jag rekommenderar er varmt att genomföra denna guide och själva se hur stor skillnad det blir. Du behöver inte ha mycket RAM-minne för att det ska vara lönt att följa denna guide. Din Firefoxprofil behöver inte vara speciellt stor om du drar ner mängden cache, ungefär 64 Mb extra RAM-minne är det som krävs för att utnyttja fördelarna av denna guide. De som kommer märka av resultaten mest är som jag nämnde tidigare ni med långsamma SSD-hårddiskar samt ni som har bärbara datorer då dessa normalt sett har lite långsammare hårddiskar.
Denna guiden täcker även helt fördelarna man får av att placera Firefox cache i Ram-minnet som jag skrivit om här.

För att ni ska se hur stor skillnad det verkligen kommer bli efter den här guiden så föreslår jag att ni gör följande test redan nu. Öppnar en ny tab i Firefox och börja skriva in en webbsida ni ofta besöker i adressfältet. Försök få en uppfattning om hur snabbt sökresultaten kommer upp då ni skriver. Skriv därefter in about:config och bilda dig en uppfattning om hur snabbt resultaten kommer fram i dina sökningar. När du fått en känsla av hur fort de olika sökningarna sker fortsätter du med guiden.

Det jag märkt efter att placerar min Firefoxprofil i RAM-minnet är följande

* Mycket mindre diskaktivitet
* Omedelbara sökresultat i about:config och adressfältet.
* Inga frysningar av Firefox.
* Snabbare rendering av sidor.

För att placera Firefoxprofilen i datorns RAM-minne så följer du instruktionerna nedan.

Börja med att ställa in hur mycket cache Firefox maximalt ska få använda. Firefox cache ligger inbakad i din Firefoxprofil. Cachen är den del av din Firefoxprofil som enskilt kräver mest minne. Vi behöver därför definiera hur mycket denna maximalt får vara.

Standardvärdet för Firefox cache är 50 MB. Beroende på hur mycket RAM-minne du kan avvara behöver du nu göra en rimlig uppskattning av hur stort värde du ska tilldela cachen. Normalt sett använder Ubuntu sällan totalt mer än ca 500-600 MB av datorns RAM-minne. Jag har 4 GB Ram vilket gör att jag kan tilldela min Firefoxprofil ca 650 MB (inklusive cache) och ändå ha mycket minne över.
Jag kommer i guiden att använda två separata lagringar av min Firefoxfrofil i RAM-minnet. En del för Firefox cache och en del för resten.
Detta för att jag dels vill ha en enkelt åtkomst till cacheinnehållet som jag valt att montera i /media/ramdisk samt för att det ska vara enkelt att följa denna guide även om man följt guiden jag skrivit tidigare som berör Firefox cache.
Jag får en extremt snabb disk på köpet monterad i /media/ramdisk. Disken kan exempelvis användas för att kompilera program extra snabbt då hårddiskens hastighet är en betydande faktor då man kompilerar program.

Om du som jag väljer att använda två separata lagringar av din Firefoxprofilen så börja med att följa instruktionerna i denna guide som behandlar Firefox cache i ram-minnet.
Fortsätt sen med stegen efter det som behandlar cache nedan.

För att ställa in maxvärdet för Firefox cache skriv in about:config i Firefox adressfält och tryck därefter enter.
Det finns nu två olika inställningar för hur Firefox lagrar cache. En för hårddisken och en för RAM-minnet.
Eftersom vi lägger hela vår profil i RAM-minnet kommer det som skrivs enligt Firefox till disken att i själva verket skrivas till RAM-minnet.

Skriv in browser.cache.disk.enable i filterfältet och kontrollera att värdet är True. Om värdet är False dubbelklickar du på False för att växla till True.
Skriv därefter in browser.cache.disk.capacity

browser.cache.disk.capacity styr följande

When a page is loaded, it is cached so it doesn't need to be downloaded to be redisplayed. This preference controls the maximum amount of hard drive space to use for caching purposes.
Länk

Dubbelklicka på browser.cache.disk.capacity för att modifiera värdet.
Tänk på att mängden du skriver in bara utgör en del av din totala Firefoxprofil. Det behövs mer RAM-minne än det du skriver in i fältet totalt sett för din Firefoxprofil. Ca 70 MB mer än vad du tilldelar browser.cache.disk.capacity kommer du behöva reservera i RAM-minnet för din Firefoxprofil. Ett rimligt värde om du vill spara RAM-minne är 20000 [Kb]. Har du däremot massor av ledigt minne kan du göra som jag och dra till med 638000 [Kb]. Ett så högt värde kommer förmodligen aldrig att uppnås om jag inte kollar mängder av filmklipp i Firefox och har datorn på 24/7 under väldigt lång tid. Eftersom jag har så mycket ledigt minne så belastar det höga värdet inte mitt minne speciellt mycket.

När du är klart skriver du in browser.cache.memory.enable och ställer in så att värdet hamnar på True.

browser.cache.memory.enable styr följande

When a page is loaded, it can be cached so it doesn't need to be rerendered to be redisplayed. This preference controls whether to use memory to cache decoded images, chrome (application user interface elements), and secure (https) pages. browser.cache.memory.capacity controls the maximum amount of memory to use.
Länk

Jag tolkade att ovanstående aktiverar exakt samma sak som browser.cache.disk.enable gör. Men dessa är tydligen helt skilda. Jag hittade följande citat

It's completely different than what the disk cache does.

Länk

Skriv nu in browser.cache.memory.capacity och tilldela det ett värde som du känner dig trygg med. Får du inget resultat av sökningen högerklickar du, väljer Ny --> Heltal och skriver in browser.cache.memory.capacity och i rutan som dyker upp efter skriver du in maxvärdet i Kb. Det värde du lägger in hamnar i en separat del av RAM-minnet som inte berörs av det vi gör i denna guide. Du måste räkna med denna del separat när du räknar på hur mycket Firefox totalt sett kommer att använda av datorns RAM-minne.
I guider på nätet så föreslås ett värde på 65536 [Kb] för de som har RAM-minne över. Standardvärdet är 4096 [Kb].
Jag väljer att sätta värdet för browser.cache.memory.capacity till 131072 [128 Mb]

Om du har gott om RAM-minne och vill att detta ska användas rekommenerar jag att öka värdet från 2 till 8 för

browser.sessionhistory.max_total_viewers

browser.sessionhistory.max_total_viewers styr

Pages that were recently visited are stored in memory in such a way that they don't have to be re-parsed (this is different from the memory cache). This improves performance when pressing Back and Forward.

This preference limits the maximum number of pages stored in memory.
Länk

Nu är vi klara med inställningarna i Firefox.

Gå nu till din hemmapp och väl där trycker du Ctrl + h för att visa dolda filer och mappar. Leta upp mappen .mozilla och gå in i den. Gå därefter in i mappen firefox. Högerklicka inne i firefoxmappen och välj Skapa mapp, döp mappen till profile. Mappen kommer att användas dels för att spara ner din profil från RAM-minnet till hårddisken och dels för att ladda in din Firefoxprofil i datorns RAM-minne när datorn startar. Mappen behövs för att ändringar i din Firefoxprofil ska kunna sparas permanent på hårddisken. RAM-minnet töms som ni vet när datorn startas om eller stängs av.

Kopiera nu innehållet i mappen xxxxxx.default (xxxxxx är en kombination av siffror och bokstäver) som finns i katalogen /.mozilla/firefox till den nyss skapade mappen profile. Min profilmapp heter rcw72e7n.default. Om du planerat att använda lite RAM-minne för din Firefoxprofil tömmer du mappen Cache som finns i mappen xxxxxx.profile innan du kopierar över innehållet.

Enklast kopierar du innehållet genom att gå in i mappen xxxxx.profile med hjälp av din filhanterare och väl inne i mappen trycka Ctrl + a för att markera allt och sedan trycka Ctrl + c för att kopiera innehållet. Gå därefter in i mappen profile och tryck Ctrl + v för att klistra in det du kopierat.
När detta är klart så föreslår jag att ni skapar ytterligare en kopia av innehållet och placerar någonstans säkert. Jag skapade en mapp i /.mozilla som en extra säkerhetsåtgärd ifall det skulle hända att mapparna med min profil raderas.

Skapa nu på en plats du kommer ihåg en tom fil (högerklicka t.ex på skrivbordet och välj Skapa dokument --> Tom fil). Döp filen till tmpfs_firefox.sh. Dubbelklicka därefter på filen och klistra in följande text till den.

#!/bin/bash

# Andra nedanstående sa att den blir exakt som din profil
PROFILE="xxxxx.default"

cd "${HOME}/.mozilla/firefox"

if test -z "$(mount | grep -F "${HOME}/.mozilla/firefox/${PROFILE}" )"
then
mount "${HOME}/.mozilla/firefox/${PROFILE}"
fi

if test -f "${PROFILE}/.unpacked"
then
rsync -av --delete --exclude .unpacked ./"$PROFILE"/ ./profile/
else
rsync -av ./profile/ ./"$PROFILE"/
touch "${PROFILE}/.unpacked"
fi

exit


I texten ovan så byter du ut PROFILE="xxxxx.default" så att den överenskommer exakt med din profilmapp. För mig ser raden ut så här

PROFILE="rcw72e7n.default"

När du är helt säker på att du skrivit in rätt så sparar du filen och stänger ner textredigeraren. Högerklicka nu på filen och välj Egenskaper. Gå till fliken Rättigheter och ändra så att Kör är ibockat till höger om ägare.



Stäng ner fönstret när du är klar. Tryck sedan Alt + F2. I rutan som dyker upp skriver du in

gksudo gedit /etc/fstab



Tryck därefter på Kör och ett textdokument som innehåller bl.a. din dators olika hårddiskpartitioner öppnas. Kopiera över nedanstående rad till dokumentet. Placera raden längst ner i dokumentet.


firefox /home/ANVÄNDARNAMN/.mozilla/firefox/xxxxxxx.default tmpfs size=MAXMÄNGDRAMMINEFÖRDINPROFIL,noauto,user,exec,uid=1000,gid=1000 0 0


Ändra därefter följande i textraden. ANVÄNDARNAMN byter du ut mot ditt användarnamn på datorn. xxxxxxx.default byter du ut så att den motsvarar din profilmapp i /.mozilla/firefox.
Ändra MAXMÄNGDRAMMINEFÖRDINPROFIL till det värde som din Firefoxprofil maximalt får använda av datorns RAM-minne. Värdet bör vara åtminstone 70 MB större än värdet för browser.cache.disk.capacity som du angav tidigare i guiden.

Min rad ser ut så här

firefox /home/leif/.mozilla/firefox/rcw72e7n.default tmpfs size=700M,noauto,user,exec,uid=1000,gid=1000 0 0

I andra guider där folk har gjort liknande har det rekommenderats 128M om browser.cache.disk.capacity är satt till 20000.

Spara filen när du är klar och stäng därefter ner textredigeraren. Undvik att starta om datorn eller stänga av den innan du är klar med resten av guiden. Startar datorn om kommer din Firefoxprofil att monteras i RAM-minnet innan vi är helt klara med guiden vilket förmodligen kommer krångla till det ordentligt.

Vi behöver nu tömma innehållet i din .mozilla/firefox/xxxxxx.default katalog. Firefox måste vara helt nerstängt innan mappen tömms för att undvika att Firefox skapar en ny profil i mappen. .
Kopiera relevant del av denna guide till en textfil eller använd en annan webbläsare under tiden för att genomföra de nästa stegen i guiden.


OBS: Nu ska Firefox vara helt nerstängt.
Innan du tömmer katalogen, kontrollera att du har en kopia av innehållet i .mozilla/firefox/xxxxxx.default i katalogen .mozilla/firefox/profile och gärna en extra kopia nånstans.

Markera allt innehåll i /.mozilla/firefox/xxxxx.default genom att trycka Ctrl + a och därefter trycka på Del för att radera innehållet. Nu ska mappen vara helt tom.

Kolla längst ner till vänster i filbläddrarfönstret och lägg på minnet hur mycket ledigt diskutrymme du har där nu. Jag har 27.6 GB ledigt. Titta efter där pilen visar i bilden nedan



Leta nu upp filen tmpfs_firefox.sh som vi skapade tidigare och dubbelklicka på den. Det kommer nu dyka upp en ruta som ser ut så här



Välj alternativet Kör i terminal. Du kommer se ett terminalfönster öppnas och stängas väldigt fort. Detta är helt normalt och beror på att det hela gick väldigt fort. Det skriptet gjorde var att montera din Firefoxprofil i datorns RAM-minne. Dubbelklicka nu en gång till på filen och välj återigen Kör i terminal. Samma sak händer som förut men med skillnaden att skriptet synkroniserade innehållet i mappen profile med mappen xxxxxx.default.

Gå nu till mappen xxxxxx.default och klicka på Uppdatera som finns i filbläddrarens övre mitt. Kontrollera att du fått tillbaks innehållet som du tog bort tidigare. Kolla därefter längst ner till vänster i filbläddraren och du ska se att det lediga diskutrymmet är ändrat och istället nu visar ledigt minne du har kvar för din Firefoxprofil i RAM-minnet.



Starta nu upp Firefox. Gör om samma test som vi gjorde i början av guiden för att få bekräftat skillnaden i hastighet. Öppna upp en ny tab, detta kommer ske märkbart snabare än förrut. Skriv in about:config i adressfältet och tryck enter. Nu kommer rutan om att vara försiktig upp omedelbart. Tryck på Jag lovar, jag ska vara försiktig och du kommer nu omedelbart till inställningshanteraren. Gör en sökning i filterrutan och du kommer märka att resultaten av sökningarna du gör kommer fram direkt. Testa även att i Firefox adressfält söka på en sida du brukar besöka. Resultaten från sökningen kommer omedelbart.
En annan sak som du kommer märka är att hårddisken jobbar mycket mindre nu än tidigare. När Firefox väl börjat bygga upp cache kommer du även märka skillnad i hastighet av renderingen av sidorna du besöker.

Det som återstår nu är att synkronisera RAM-minnet med hårddisken så att förändringarna av profilen finns kvar efter omstart av datorn. För att göra detta behöver vi installera gnome-schedule. Klicka här för att installera det. När installationen är klar startar du upp programmet, Program --> Systemverktyg --> Schemalagda uppgifter. Finns programmet inte där så skriv in gnome-schedule i rutan som dyker upp efter du tryckt Alt + F2.

När programmet startat klickar du på Ny som finns uppe till vänster i programmet. Du möts då av



Välj det översta alternativet En uppgift som körs återkommande. En ny ruta dyker upp. Fyll i fälten så att det blir som i bilden nedan



Du kan ändra siffran 5 till nåt annat, siffran anger tiden i minuter mellan synkroniseringen från RAM-minnet till hårddisken. När du är klar tryck Verkställ och därefter OK i rutan som dyker upp. Stäng ner programmet och leta upp filen tmpfs_firefox.sh. Flytta filen till din hemmapp. Högerklicka sedan på den och välj Byt namn... och lägg till en punkt framför namnet tmpfs_firefox.sh så att dess namn blir .tmpfs_firefox.sh. När du döpt om den så klicka på Uppdatera i filhanteraren och filen kommer att bli dold. Trycker du Ctrl + h för att vissa dolda filer och mappar kan du enkelt lokalisera filen igen.
Nu kommer synkroniseringen skötas helt automatiskt efter omstart av datorn.

Gå nu till System --> Inställningar --> Uppstartsprogram

I rutan som dycker upp klickar du på Lägg till och fyller i följande i rutan som dyker upp:
Namn: Firefox RAM
Kommando: /home/ANVÄNDARNAMN/.tmpfs_firefox.sh

Byt ut ANVÄNDARNAMN till ditt egna. Tryck därefter Spara följt av Stäng
Vi är nu nästan klara, det enda som återstår är att starta om datorn och därefter få bekräftat att allt funkar som det ska.
Efter omstart, skriv in kommandot mount i ett terminalfönster och du ska då se en rad likannde denna

firefox on /home/leif/.mozilla/firefox/rcw72e7n.default type tmpfs (rw,nosuid,nodev,size=700M,uid=1000,gid=1000,user=leif)

Denna guide är baserad på en tråd från ett Gentooforum samt följande artikelVerot.net
Credits till stevenrobertson som postade ideén ursprungligen på Gentooforumet och Joakim Karlsson som uppmärksammade mig på Gentootråden via en kommentar i min blogg.

11 kommentarer:

Anonym sa...

Bra guider du har. Du kanske har lust att skriva guider till min hemsida? www.zozan.se

pulf sa...

Hej. Jag blev lite nervös efter omstart eftersom min profil var nollställd. Jag trodde jag hade skrivit fel någonstans.
Det var i ditt sista frivilliga skript som det fattas en punkt framför tmpfs_firefox.sh.
Efter det gick det fint. Jag tackar!
By the way, jag heter också Leif så det underlättar när jag följer dina guider :-)

Anonym sa...

Jag är helt ny på ubuntu. Jag hade ramdisk i mitt windows där jag hade firefox och andra program som jag ville skulle starta snabbt och utan att hårddisken grindades hela tiden.

Och jag har letat efter howtos för att få det i ubuntu också men inte lyckats så bra.

Följde din guide och det funkade sketabra!
Läste dock lite slarvigt så jag fick göra den ett par gånger, men nu funkar det perfekt.
Tack!

Adde sa...

Guiden fungerar även utmärkt för att göra både Flock och Songbird rejält mycket snabbare (även om den senare fortfarande är plågsamt långsam)! Tusen tack!

jlindbergh sa...

Bra guide! Fråga på det: Hur gör man på bästa sätt om man vill vara på den säkra sidan och köra scriptet när man stänger ner datorn också? Alltså jag tänkte.. om man som jag har för vana att stänga ner datorn ganska direkt efter man stängt firefox. Då är det ju inte givet att profilen har hunnit synkas från ramdisk->hårddisk eller hur?

Bossieman sa...

@jlindberg

En idé skulle kunna vara att man modifierar det script som är knutet till avstängningen av datorn.

barzam sa...

Funkade kanon med Archlinux (uppaterat idag 10/5) och Firefox 3.0.10-1. Behövde bara installera rsync och lägga upp cron-jobbet i crontab och Awesomes autostart. Tack för en mycket bra guide!

gunnar-eee sa...

Bra guide. Det väcker ju frågan om inte det borde finnas ett automatiserat alternativ i browser-installationen som konfigurerar en sådan här inställning. En knapptryckning och sedan är det klart.
Annars blir det bara en på 1000 som får nöjet att uppleva resultatet.

Unknown sa...

En riktigt bra skriven guide. Jag hade ett litet problem efter omstart och det var körrättigheterna på tmpfs_firefox.sh som var felaktig, ett litet slarvfel.

Anonym sa...

tror det blir för svårt för mig...är det inte nån som kan göra tex. ett program så det är att bara skriva in hur mycket minne man vill undvara..?

Anonym sa...

I must call it a brilliant message board, I never think about reading out an entire forum section but this forum was successful in getting my interest and trust me, That’s unusual.

[color=#000000][URL=http://www.healthylifestore.co.uk/SlenderXcellerate]SlenderXcellerate[/URL] [URL=http://www.healthylifestore.co.uk/Rizopia]Rizopia[/URL] [URL=http://www.healthylifestore.co.uk/ZA]ZA[/URL] [URL=http://www.healthylifestore.co.uk/Human-Kinetics]Human Kinetics[/URL] [URL=http://www.healthylifestore.co.uk/Veromax]Veromax[/URL] [/color]