forked from kokoko3k/gopreload
-
Notifications
You must be signed in to change notification settings - Fork 0
/
README
129 lines (106 loc) · 4.64 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
GOPreload Readme
Description:
Got tired of the way the kernel decides what to keep cached and what
not, especially after watching a DVD or copying large files,
I decided to write two simple scripts which keep the applications
I use most in the system cache by mmapping and mlocking them in memory.
Requirements:
fmlock (sourcecode included thanks to datenwolf)
strace
readlink
basename
dirname
Installation:
* Put everything under /
* You may want to edit /etc/gopreload.conf
to customize gopreload to your needs.
* systemd users:
systemctl daemon-reload
systemctl enable gopreload
* To give regular users the ability to choose new programs
to preload, give them write access to:
/usr/share/gopreload/enabled and
/usr/share/gopreload/disabled
Usage and example:
First of all, you must think on a few applications which you REALLY
need to be very responsive on starting.
Take firefox as an example:
--
I will use then 'Prepare.sh' that way:
/usr/share/gopreload/bin/Prepare.sh firefox
(wait for Firefox to fully load and press ENTER in the shell)
Now Prepare.sh has created a new file called firefox.YourUID.openfiles.txt
in the /usr/share/gopreload/enabled/ folder.
The generated filename includes an estimation of the MB wich will stay
resident in ram.
It contains the list of files which firefox needs to start-up, the
idea is to keep them in ram so that next time firefox will start,
it will not read them from disk and will start-up much, much faster.
You can reiterate Prepare.sh as much as you like, think of konqueror,
nautilus, kwrite, gedit and so on, but don't do too much, because
your memory is limited.
***NOTICE:***
As soon as you update firefox or its needed libraries, you will
need to (re)Prepare it again!
To re-prepare your programs in an automatic/batch way,
(eg: after system upgrades), you can use:
/usr/share/gopreload/bin/batch_refresh.sh
--
--
Non systemd users:
Now that you 'prepared' your programs, you need to use 'StartPreload.sh',
and you need root privileges.
sudo /usr/share/gopreload/bin/StartPreload.sh
systemd users:
systemctl start gopreload
Just sit and wait for StartPreload.sh to preload the file lists
you created with Prepare.sh, next time (and forever) you will launch
the programs you choose, you will notice a nice speed boost,
even if you're short of memory.
StartPreload.sh can be launched with debug parameter:
./StartPreload.sh debug
...to see some interesting things.
--
You may have noticed that there are two folders under GOPreload:
* /usr/share/gopreload/enabled/ meaning should now be clear
* /usr/share/gopreload/disabled/ is empty, you can use it to move filelists
'on the fly' from enabled/ to disabled/ folder.
StartPreload.sh will notice the changes and will react accordingly.
Configuration Variables:
Prepare.sh:
* MAXMB is the Maximum filesize (in MB) to preload at 'prepare' stage.
files bigger than MAXMB will NOT be included in the list.
Small files tend to slow down things more than big ones,
big files will use a lot of ram, so I suggest you to keep
it to a value not greater than 15MB.
* EXCLUDE_LIST contains a list of file extension you won't preload.
Maybe you would like to exclude avi, mp3 and so on...
Please, refer to Prepare.sh to learn the syntax.
StartPreload.sh
* MAXMB is the maximum filesize (in MB) to preload at 'preload' stage.
Files bigger than MAXMB will NOT be preloaded, even if they are
in the list created by Prepare.sh, set it to "-1" to disable the
feature.
* LONG_DELAY is the time (in seconds) to check if enabled/ disabled/
content has changed, don't set it too low or leave as default.
Suggestions:
* As StartPreload.sh could be very heavy the first time it starts
(I use it to load about 150MB of files), I suggest you to launch it
with nice and ionice at boot time in your rc scripts using something
like that:
nice -n 19 ionice -c3 sh -c '/usr/share/goPreload/StartPreload.sh'
(this is done automagically by the systemd service)
* Please note that even if you have, say, prepared konqueror which takes
20MB of ram and kwrite which takes 14, it is more likely that
if they are preloaded together, they will share a lot of (kde)libs,
so you can expect them together to keep only a little more of 20MB.
* Please note that programs which you prepare can't be swapped
to swapfile.
Some Benchmarks; Start Application Times
Program |WithPreload |WithoutPreload
| |
oowriter |0m3.502s |0m11.768s
thunderbird |0m3.704s |0m12.675s
firefox |0m5.038s |0m16.160s
winecfg |0m2.559s |0m5.032s
kwrite |0m1.166s |0m3.045s