View previous topic :: View next topic |
Author |
Message |
JonathanVQP n00b
Joined: 30 Nov 2020 Posts: 58
|
Posted: Sun Dec 06, 2020 9:12 pm Post subject: Using Portage TMPDIR on tmpfs |
|
|
I am running Gentoo in Vmware using 16 Gigs of ram. I am trying to increase the emerge process by using ram to emerge. I am using tmpfs. I have read in previous forums that people have put /var/usr/portage in RAM instead of HDD which speeds up the process considerably. However, tmpfs is using volatile memory so when does tmpfs write to disk? When I tried to emerge Gnome on tmpfs, I received the "no space left on device" so I increased the tmpfs space. I am worried that if I place all of /var/usr/portage in Ram using tmpfs, it won't write to disk and loose everything if my vm crashes or power is shut off. I have looked at zram and zswap but what would be the better choice for my situation? |
|
Back to top |
|
|
SlashBeast Retired Dev
Joined: 23 May 2006 Posts: 2922
|
Posted: Sun Dec 06, 2020 9:30 pm Post subject: |
|
|
Using tmpfs for portage tmpdir have a drawback of using ram, also, tmpfs can be swapped out.
Keep in mind that some packages will require at minimum 2 GB of ram per one parallel make job, Chromium for example will need more than 2 GB per parallel job, so if you have 16 GB of ram, and build chromium with make -j8, unless you have swap, you will run into OOM Killer.
There's usually hardly a reason to use tmpfs for portage tmpdir unless you have plenty of ram, and even then, it's good idea to exclude some packages, like chromium, from using it, via /etc/portage/package.env. |
|
Back to top |
|
|
NeddySeagoon Administrator
Joined: 05 Jul 2003 Posts: 54578 Location: 56N 3W
|
Posted: Sun Dec 06, 2020 9:39 pm Post subject: |
|
|
JonathanVQP,
tmpfs does not write to disk.
the content of tmpfs can be moved to swap but thats slow and should be avoided.
tmpfs is implemented using all the same code as any other filesystem, except the disk bit is missing.
From that, it follows that putting /var/tmp/portage into tmpfs actually saves very little time because if you have the RAM to make it work, the kernel virtual memory system is doing it for you anyway.
You save the time for the writes that will never be read. That's only fraction of a second, ever on a big package.
Nothing will be lost, at least no more than normal, if you lose the content of /var/tmp/portage.
Its only used for temporary build time products that will be discarded when the build completes anyway.
The last step in any build is to merge the completed build to the root filesystem.
The root filesystem is not on tmpfs, so the things you want to keep are committed at the end of every package. _________________ Regards,
NeddySeagoon
Computer users fall into two groups:-
those that do backups
those that have never had a hard drive fail. |
|
Back to top |
|
|
pietinger Moderator
Joined: 17 Oct 2006 Posts: 5109 Location: Bavaria
|
Posted: Sun Dec 06, 2020 10:27 pm Post subject: |
|
|
JonathanVQP,
it also depends what you are doing additionally to your emerge. Browsing the internet costs much RAM. I have an Intel I7 with 16 GB RAM and a SSD and using KDE (plasma).
I have in my fstab:
Code: | tmpfs /var/tmp/portage tmpfs rw,nodev,nosuid,size=12G,uid=portage,gid=portage,mode=775,noatime 0 0 |
and in my make.conf:
Code: | MAKEOPTS="-j8
[...]
USE="$USE jumbo-build" |
This is the highest I can go. When emerging QTWebEngine (a monster), I see in my (kde) system monitor a peek use of 15,2 GB WITHOUT swapping - WHEN doing nothing else ...
If you have a system monitor with gnome also, watch it some times.
I recommend using the tmpfs, even with a SSD - if you have problems i would suggest to use a lower MAKEOPTS (especially if you compile over night and you are not waiting for the finish of the emerge). For big emerges - when running in the night - I use MAKEOPTS=4 ... just to be sure ... |
|
Back to top |
|
|
JonathanVQP n00b
Joined: 30 Nov 2020 Posts: 58
|
Posted: Sun Dec 06, 2020 11:24 pm Post subject: |
|
|
pietinger: I fully aware how long it takes to emerge QTWebengine since it took 18hours for me. Since you use tmpfs, does it write to disk when it gets full? That is my main concern. Since I have 32 gigs of RAM, RAM is not really a concern. My main concern is making the emerge process faster and if I can use RAM to make it faster and then have it write to disk when it done. When I got the "device is full" error, it appears that it does not write to disk when full. |
|
Back to top |
|
|
NeddySeagoon Administrator
Joined: 05 Jul 2003 Posts: 54578 Location: 56N 3W
|
Posted: Sun Dec 06, 2020 11:48 pm Post subject: |
|
|
JonathanVQP,
tmpfs can be swapped but if that happens tmpfs should not be used for that package.
Set the build location for PORTAGE_TMPDIR on a per package basis.
Individual builds cannot be continued by emerge once they have been stopped for any reason.
The interrupted package will start from the beginning again. _________________ Regards,
NeddySeagoon
Computer users fall into two groups:-
those that do backups
those that have never had a hard drive fail. |
|
Back to top |
|
|
AlexJGreen Tux's lil' helper
Joined: 19 Sep 2018 Posts: 149
|
Posted: Sun Dec 06, 2020 11:49 pm Post subject: |
|
|
_
Last edited by AlexJGreen on Mon Dec 28, 2020 3:26 am; edited 2 times in total |
|
Back to top |
|
|
pietinger Moderator
Joined: 17 Oct 2006 Posts: 5109 Location: Bavaria
|
Posted: Sun Dec 06, 2020 11:57 pm Post subject: |
|
|
JonathanVQP wrote: | pietinger: I fully aware how long it takes to emerge QTWebengine since it took 18hours for me.[...] |
What ?? Which CPU do you have ? For QTWebEngine AND 32 GB you MUST use "jumbo-build" ...
JonathanVQP wrote: | Since you use tmpfs, does it write to disk when it gets full? |
No. (Happened only one time with libreoffice)
JonathanVQP wrote: | My main concern is making the emerge process faster [...] |
1. I recommend to use only makeopts="-jx" and not setting makeopts="-j. -l."
2. Dont use an old recommendation to set -j= Nr.of cores + 1. Best is -j= Nr. of cores |
|
Back to top |
|
|
Hu Administrator
Joined: 06 Mar 2007 Posts: 22657
|
Posted: Sun Dec 06, 2020 11:58 pm Post subject: |
|
|
JonathanVQP wrote: | Since you use tmpfs, does it write to disk when it gets full? | According to the kernel documentation: Code: | tmpfs puts everything into the kernel internal caches and grows and
shrinks to accommodate the files it contains and is able to swap
unneeded pages out to swap space. It has maximum size limits which can
be adjusted on the fly via 'mount -o remount ...' | So yes, it can write to your swap area if needed. JonathanVQP wrote: | My main concern is making the emerge process faster and if I can use RAM to make it faster and then have it write to disk when it done. | emerge will always write the finished product to disk, if the build finishes. This applies without regard to how you store the intermediate results. JonathanVQP wrote: | When I got the "device is full" error, it appears that it does not write to disk when full. | A tmpfs can become full, just as a persistent filesystem can. "No space left on device" with a tmpfs means that the tmpfs is now storing the maximum amount of data it was configured to allow. It cannot store more without exceeding the limits set by the administrator, so it returns ENOSPC. Depending on available RAM and the administrator's choice of limits, the tmpfs may have spilled some contents to swap before this point, or not. Additionally, there may be substantial free RAM remaining in the system when this happens, if the tmpfs limit was set low enough. |
|
Back to top |
|
|
pietinger Moderator
Joined: 17 Oct 2006 Posts: 5109 Location: Bavaria
|
Posted: Mon Dec 07, 2020 12:03 am Post subject: |
|
|
Hu wrote: | [...], if the tmpfs limit was set low enough. |
Yes, Hu, it was "size=10G" before and I had to set it to "size=12G"
@JonathanVQP: Dont worry - tmpfs will NOT allocate this if NOT needed (its only a maximum setting). |
|
Back to top |
|
|
|