# [gelöst] tmpfs/rust@34GigSSDfree: no space left

## LuxJux

Ohne tmpfs gehts. 

ccache in make.conf wurde angepasst.

```
df

Filesystem     1K-blocks      Used Available Use% Mounted on

none             8160204       812   8159392   1% /run

udev               10240         0     10240   0% /dev

tmpfs            8160204         0   8160204   0% /dev/shm

/dev/sdb3       74059952  46194692  24076512  66% /

cgroup_root        10240         0     10240   0% /sys/fs/cgroup

tmpfs            3145728       316   3145412   1% /var/tmp/portage

```

```
>>> Failed to emerge dev-lang/rust-1.51.0-r2, Log file:

>>>  '/var/tmp/portage/dev-lang/rust-1.51.0-r2/temp/build.log'

 * Messages for package dev-lang/rust-1.51.0-r2:

 * There is NOT at least 11520 MiB disk space at "/var/tmp/portage/dev-lang/rust-1.51.0-r2/temp"

 * 

 * Space constraints set in the ebuild were not met!

 * The build will most probably fail, you should enhance the space

 * as per failed tests.

 * 

 * ERROR: dev-lang/rust-1.51.0-r2::gentoo failed (pretend phase):

 *   Build requirements not met!

 * 

 * Call stack:

 *               ebuild.sh, line 125:  Called pkg_pretend

 *   rust-1.51.0-r2.ebuild, line 205:  Called pre_build_checks

 *   rust-1.51.0-r2.ebuild, line 201:  Called check-reqs_pkg_pretend

 *       check-reqs.eclass, line  96:  Called check-reqs_pkg_setup

 *       check-reqs.eclass, line  87:  Called check-reqs_output

 *       check-reqs.eclass, line 230:  Called die

 * The specific snippet of code:

 *         [[ ${EBUILD_PHASE} == "pretend" && -z ${I_KNOW_WHAT_I_AM_DOING} ]] && \

 *            die "Build requirements not met!"

 * 

 * If you need support, post the output of `emerge --info '=dev-lang/rust-1.51.0-r2::gentoo'`,

 * the complete build log and the output of `emerge -pqv '=dev-lang/rust-1.51.0-r2::gentoo'`.

 * The complete build log is located at '/var/tmp/portage/dev-lang/rust-1.51.0-r2/temp/build.log'.

 * The ebuild environment file is located at '/var/tmp/portage/dev-lang/rust-1.51.0-r2/temp/die.env'.

 * Working directory: '/var/tmp/portage/dev-lang/rust-1.51.0-r2/homedir'

 * S: '/var/tmp/portage/dev-lang/rust-1.51.0-r2/work/rustc-1.51.0-src'

```

----------

## mike155

Ja. Und was ist jetzt die Frage?

Wenn man meint, dass die Sicherheitsabfrage nach dem Platz in '/var/tmp/portage' nicht notwendig oder übertrieben ist, kann man es ja mit I_KNOW_WHAT_I_AM_DOING=1 probieren... Oder man verwendet zram anstelle von tmpfs, was einem etwas mehr Platz verschafft. Aber von 4 GB kommt man sicherlich nicht auf 11.5 GB, zumal man ja auch noch jede Menge freies RAM für die Compiler-Prozesse selbst braucht.

----------

## LuxJux

 *mike155 wrote:*   

> Ja. Und was ist jetzt die Frage?
> 
> ..... Aber von 4 GB kommt man sicherlich nicht auf 11.5 GB, zumal man ja auch noch jede Menge freies RAM für die Compiler-Prozesse selbst braucht.

 

Wo siehst du hier 4 GB ?

RAm = 16 Gb

Gentoo = 80 GB

fstab/tmpfs = 13GB ( eigentlich )

freeSpace = knapp 25 GB SSD

```
emerge --info

Portage 3.0.17 (python 3.8.8-final-0, default/linux/amd64/17.1/desktop, gcc-10.2.0, glibc-2.32-r7, 5.10.27-gentoo-x86_64 x86_64)

=================================================================

System uname: Linux-5.10.27-gentoo-x86_64-x86_64-Intel-R-_Core-TM-_i7-4790K_CPU_@_4.00GHz-with-glibc2.2.5

KiB Mem:    16320408 total,  14972964 free

KiB Swap:          0 total,         0 free

Timestamp of repository gentoo: Sat, 24 Apr 2021 07:00:01 +0000

Head commit of repository gentoo: 2bcaa5c39729e13d576c492aa500c85b7753b565

sh bash 5.0_p18

ld GNU ld (Gentoo 2.35.2 p1) 2.35.2

ccache version 4.2 [disabled]

app-shells/bash:          5.0_p18::gentoo

dev-lang/perl:            5.30.3::gentoo

dev-lang/python:          2.7.18_p8::gentoo, 3.8.8_p1::gentoo, 3.9.2_p1::gentoo

dev-lang/rust:            1.47.0-r2::gentoo

dev-util/ccache:          4.2::gentoo

dev-util/cmake:           3.18.5::gentoo

sys-apps/baselayout:      2.7::gentoo

sys-apps/openrc:          0.42.1-r1::gentoo

sys-apps/sandbox:         2.20::gentoo

sys-devel/autoconf:       2.13-r1::gentoo, 2.69-r5::gentoo

sys-devel/automake:       1.16.2-r1::gentoo

sys-devel/binutils:       2.35.2::gentoo

sys-devel/gcc:            10.2.0-r5::gentoo

sys-devel/gcc-config:     2.4::gentoo

sys-devel/libtool:        2.4.6-r6::gentoo

sys-devel/make:           4.3::gentoo

sys-kernel/linux-headers: 5.10::gentoo (virtual/os-headers)

sys-libs/glibc:           2.32-r7::gentoo

Repositories:

gentoo

    location: /var/db/repos/gentoo

    sync-type: rsync

    sync-uri: rsync://rsync.gentoo.org/gentoo-portage

    priority: -1000

    sync-rsync-verify-jobs: 1

    sync-rsync-verify-metamanifest: yes

    sync-rsync-verify-max-age: 24

    sync-rsync-extra-opts: 

lto-overlay

    location: /var/lib/layman/lto-overlay

    masters: gentoo mv

    priority: 50

mv

    location: /var/lib/layman/mv

    masters: gentoo

    priority: 50

ACCEPT_KEYWORDS="amd64"

ACCEPT_LICENSE="@FREE"

CBUILD="x86_64-pc-linux-gnu"

CFLAGS="-march=native -O3     -fuse-linker-plugin -pipe -falign-functions=32"

CHOST="x86_64-pc-linux-gnu"

CONFIG_PROTECT="/etc /usr/share/gnupg/qualified.txt"

CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/dconf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo"

CXXFLAGS="-march=native -O3     -fuse-linker-plugin -pipe -falign-functions=32"

DISTDIR="/var/cache/distfiles"

ENV_UNSET="CARGO_HOME DBUS_SESSION_BUS_ADDRESS DISPLAY GOBIN GOPATH PERL5LIB PERL5OPT PERLPREFIX PERL_CORE PERL_MB_OPT PERL_MM_OPT XAUTHORITY XDG_CACHE_HOME XDG_CONFIG_HOME XDG_DATA_HOME XDG_RUNTIME_DIR"

FCFLAGS="-march=native -O3     -fuse-linker-plugin -pipe -falign-functions=32"

FEATURES="assume-digests binpkg-docompress binpkg-dostrip binpkg-logs config-protect-if-modified distlocks ebuild-locks fixlafiles ipc-sandbox merge-sync multilib-strict network-sandbox news parallel-fetch pid-sandbox preserve-libs protect-owned qa-unresolved-soname-deps sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr"

FFLAGS="-march=native -O3     -fuse-linker-plugin -pipe -falign-functions=32"

GENTOO_MIRRORS="https://mirrors.soeasyto.com/distfiles.gentoo.org/ https://mirror.eu.oneandone.net/linux/distributions/gentoo/gentoo/ ftp://ftp.wh2.tu-dresden.de/pub/mirrors/gentoo"

LANG="en_US.utf8"

LDFLAGS="-Wl,-O1 -Wl,--as-needed"

MAKEOPTS="-j9"

PKGDIR="/var/cache/binpkgs"

PORTAGE_CONFIGROOT="/"

PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --omit-dir-times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages --exclude=/.git"

PORTAGE_TMPDIR="/var/tmp"

USE="X a52 aac acl acpi alsa amd64 berkdb bluetooth branding bzip2 cairo cdda cdr cli crypt cups dbus dri dts dvd dvdr elogind emboss encode exif flac fortran gdbm gif go gpm graphite gtk gui iconv icu ipv6 jpeg lcms libglvnd libnotify libtirpc lto mad mng mp3 mp4 mpeg multilib ncurses nls nptl nvidia ogg opengl openmp pango pcre pdf pgo png policykit ppds pulseaudio qt5 readline sdl seccomp spell split-usr ssl startup-notification svg tcpd tiff truetype udev udisks unicode upower usb vorbis wxwidgets x264 xattr xcb xml xv xvid zlib" ABI_X86="64" ADA_TARGET="gnat_2018" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" APACHE2_MODULES="authn_core authz_core socache_shmcb unixd actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" CALLIGRA_FEATURES="karbon sheets words" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" CPU_FLAGS_X86="aes avx avx2 f16c fma3 mmx mmxext pclmul popcnt sse sse2 sse3 sse4_1 sse4_2 ssse3" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock greis isync itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf skytraq superstar2 timing tsip tripmate tnt ublox ubx" INPUT_DEVICES="evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" LIRC_DEVICES="devinput" LUA_SINGLE_TARGET="lua5-1" LUA_TARGETS="lua5-1" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php7-3 php7-4" POSTGRES_TARGETS="postgres10 postgres11" PYTHON_SINGLE_TARGET="python3_8" PYTHON_TARGETS="python3_8" RUBY_TARGETS="ruby26" USERLAND="GNU" VIDEO_CARDS="amdgpu fbdev intel nouveau radeon radeonsi vesa dummy v4l" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq proto steal rawnat logmark ipmark dhcpmac delude chaos account"

Unset:  CC, CPPFLAGS, CTARGET, CXX, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LC_ALL, LINGUAS, PORTAGE_BINHOST, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, RUSTFLAGS

```

----------

## fedeliallalinea

```
tmpfs            3145728       316   3145412   1% /var/tmp/portage 
```

```
fstab/tmpfs = 13GB ( eigentlich ) 
```

Posten Sie Ihre /etc/fstab

----------

## LuxJux

```
# tmpfs      /var/tmp/portage      tmpfs   size=13G,uid=portage,gid=portage,mode=775,noatime
```

Nun emerge rust erledigt.

----------

## LuxJux

Um das konkret zu formulieren:

- fstab/tmpfs ist egal ( kann konfiguriert werden )

Nur wenn tmpfs aus der fstab rausgenommen wird kann rust compilieren.

Egal wie gross tmpfs ist

----------

## Haraldpeter

Hi,

oder du gehst einen anderen Weg:

- du lässt tmpfs in der Fstab drinnen

du legst eine Datei mit folgenden Inhalt an

```
nano -w /etc/portage/env/notmpfs.conf

PORTAGE_TMPDIR="/var/tmp/notmpfs"
```

```
root #mkdir /var/tmp/notmpfs

root #chown portage:portage /var/tmp/notmpfs

root #chmod 775 /var/tmp/notmpfs 
```

```
nano -w  /etc/portage/package.env
```

dann da rein:

```
dev-lang/rust         notmpfs.conf
```

da kannst du auch andere sehr grosse Packete wie z.B Qtwebengine usw reintun

Haraldpeter

----------

## mike155

Bei 16 GB RAM und "MAKEOPTS="-j9"" ist das Deaktivieren von tmpfs für Rust die beste Alternative. Die 16 GB RAM benötigt man vermutlich schon rein fürs Compilieren. Da sollte man nicht noch RAM für Tmpfs oder ZRam abzwacken.

Zu "CFLAGS=-O3" kann ich das Handbuch zitieren: https://wiki.gentoo.org/wiki/GCC_optimization:

 *Quote:*   

> -O3: the highest level of optimization possible. It enables optimizations that are expensive in terms of compile time and memory usage. Compiling with -O3 is not a guaranteed way to improve performance, and in fact, in many cases, can slow down a system due to larger binaries and increased memory usage. -O3 is also known to break several packages. Using -O3 is not recommended. However, it also enables -ftree-vectorize so that loops in the code get vectorized and will use AVX YMM registers.

 

----------

## Haraldpeter

Hi,

..Rust 1.5.1 ging bei mir nicht mal mit 24GB Ram  in TMPFS (habe 18GB TMPFS)

----------

## mike155

 *Quote:*   

> ..Rust 1.5.1 ging bei mir nicht mal mit 24GB Ram in TMPFS (habe 18GB TMPFS)

 

Hm. Ich habe Rust 1.51 gerade compiliert - und dabei alle 20 Sekunden die Ausgabe von 'zramctl' mitprotokolliert.

Das Maximum war:

```
NAME       ALGORITHM DISKSIZE  DATA COMPR TOTAL STREAMS MOUNTPOINT

/dev/zram0 lz4          19.5G 13.7G  7.2G  7.5G       4 /var/tmp/portage

```

Auf /var/tmp/portage waren also 13,7 GB belegt - und zram konnte das auf 7.5 GB komprimieren.

Von daher würde ich davon ausgehen, dass 18 GB tmpfs auf /var/tmp/portage ausreichen sollten.

----------

## LuxJux

Dann ist miene tmpfs mit 13 GiB sowieso zu klein.

Und wegen dem O3 ltoize ist ja nur gcc. Den Intel hab ich noch gar nicht versucht. Der ist procedures ansich für O3 ausgelegt.

Doch selbst bei stable ist das unbekanntes Neuland.

 *Quote:*   

> Your Application has crashed. Bitte kümmern sie sich darum.

 

war noch nie.

Der Intel O3 ist  für Rechenfehler bekannt. Bei Video fällt das nicht so auf. 

Für der Marslandung wär das blöd.

----------

## mike155

"-O3" ist gut, wenn man selbst ein Programm schreibt. Dann kann man schauen, ob es mit "-Os", "-O2" oder "-O3" am schnellsten läuft. Wenn man wirklich an Geschwindigkeit interessiert ist, kann man auch die diversen anderen Optimierungs-Flags noch ausprobieren. Vor allem kann man selbst gut testen, ob das Programm noch gut läuft.

"-O3" bei Programmen anderer Entwickler ist ein Glücksspiel. Vielleicht wird es schneller, vielleicht aber auch langsamer. Vielleicht läuft es richtig, vielleicht aber auch nicht. Man kann nicht gut testen, weil man den Code anderer Entwickler nicht gut kennt. Man weiß gar nicht, an welcher Stelle man testen müsste, um Fehler zu finden.

Deshalb rate ich von "-O3" als generelle Einstellung in den CFLAGS ab. Für eigene Programme oder für ein einzelnes Paket, das man sehr gut kennt, kann es aber nützlich sein. Aber immer erst nach ausführlichen Performance- und Funktions-Tests.

----------

## Josef.95

Schaut dazu auch im https://bugs.gentoo.org/783768

----------

## LuxJux

Danke fuer deinen Tipp mit der notmpfs.conf

- rust

- gcc

- qtwebengine 

sind dann auch gleich mit reingewandert.

Da gabs doch mal ein USE-Flag -jumbobuild

Wieso wird das eigentlich nicht global eingesetzt ?

Bitte entschuldigt meine Unwissenheit. Ist das tatsächlich soooooooooo......... schwierig ?

----------

