--- /dev/null
+#!/bin/bash
+clear
+echo "free:"
+free
+printf '\n'
+echo "grep -i zswap /proc/meminfo:"
+grep -i zswap /proc/meminfo
+printf '\n'
+echo "grep -E '^zswp' /proc/vmstat:"
+grep -E '^zswp' /proc/vmstat
+printf '\n'
+echo "grep -E '^(zswap|zswapped|zswpin|zswpout|zswpwb) ' /sys/fs/cgroup/memory.stat:"
+grep -E '^(zswap|zswapped|zswpin|zswpout|zswpwb) ' /sys/fs/cgroup/memory.stat
+printf '\n'
+echo "grep -E '^(pswpin|pswpout) ' /proc/vmstat:"
+grep -E '^(pswpin|pswpout) ' /proc/vmstat
+printf '\n'
+echo "ps -eLo pid,tid,psr,cls,rtprio,ni,pcpu,comm --sort=-pcpu | head -n 27:"
+ps -eLo pid,tid,psr,cls,rtprio,ni,pcpu,comm --sort=-pcpu | head -n 27
+ printf '\n'
+if [[ -d "/proc/pressure" ]]; then
+ echo "PSI - Pressure Stall Information"
+ printf '\n'
+ echo "cat /proc/pressure/cpu"
+ cat /proc/pressure/cpu
+ printf '\n'
+ echo "cat /proc/pressure/memory"
+ cat /proc/pressure/memory
+fi
+
--- /dev/null
+#!/bin/bash
+
+INTERFACE="enp16s0"
+SYSCTL="net.ipv6.conf.${INTERFACE}.disable_ipv6"
+
+if [[ $(sysctl -n "$SYSCTL") == 0 ]]; then
+ sudo sysctl -w "$SYSCTL=1"
+ echo "IPv6 auf $INTERFACE deaktiviert."
+else
+ sudo sysctl -w "$SYSCTL=0"
+ echo "IPv6 auf $INTERFACE aktiviert."
+fi
+
--- /dev/null
+#!/bin/bash
+
+case "$NOCTALIA_THEME_MODE" in
+ dark)
+ theme="dabruin"
+ ;;
+ light)
+ theme="dabruin-light"
+ ;;
+ *)
+ exit 0
+ ;;
+esac
+
+kak -l | while IFS= read -r session; do
+ printf 'colorscheme %s\n' "$theme" |
+ kak -p "$session" 2>/dev/null
+done
+
--- /dev/null
+#!/bin/bash
+
+while sleep 2;
+ do
+ date '+--- %F %T ---';
+ grep -E '^(MemAvailable|SwapFree|Zswap|Zswapped):' /proc/meminfo;
+ grep -E '^(zswpin|zswpout|zswpwb|pswpin|pswpout) ' /proc/vmstat;
+ grep -E '^(some|full) ' /proc/pressure/memory;
+ done > ~/memory-pressure.log
+++ /dev/null
-#!/bin/bash
-
-PORTAGE_CPUS="8-15,24-31"
-BUILD_CGROUP="/sys/fs/cgroup/openrc.portage-cgroup"
-
-# make sure we're root
-root_check(){
- if [ "$(id -u)" -ne 0 ];then
- echo ""
- echo "You have to run this script with sudo"
- exit 0
- fi
-}
-
-pin_to_ccd() {
- taskset -pc "$PORTAGE_CPUS" $$ >/dev/null || {
- echo "CPU affinity konnte nicht gesetzt werden"
- exit 1
- }
-}
-
-ccd_emerge() {
- taskset -c "$PORTAGE_CPUS" /usr/bin/emerge "$@"
-}
-
-ccd_make() {
- taskset -c "$PORTAGE_CPUS" schedtool -D -e make "$@"
-}
-
-run_in_portage_cgroup () {
- (
- echo "$BASHPID" > "$BUILD_CGROUP/cgroup.procs" || exit 1
- exec "$@"
- )
-}
-
-# make sure we're running gentoo
-grep -i gentoo /etc/os-release || { echo "Dieses System basiert nicht auf Gentoo" && exit 1; }
-
-numcores="$(echo ""$(nproc)"" /2 | bc)"
-
-cd_to_src(){
- readlink -f "/usr/src/linux" || { echo "Symlink /usr/src/linux nicht gesetzt oder fehlerhaft" && exit 2; }
- cd "/usr/src/linux" || { echo "Verzeichniswechsel fehlgeschlagen" && exit 2; }
-}
-
-clean_builddir(){
- make mrproper
-}
-
-call_makejobs(){
- # pin_to_ccd
- ccd_make oldconfig
- ccd_make modules_prepare
- ccd_make -j"$numcores" || exit 2
- ccd_make modules_install
- ccd_make install
- run_in_portage_cgroup schedtool -D -e emerge -avuDNg @module-rebuild
-}
-
-build_kernel_in_cgroup(){
- (
- echo "$BASHPID" > "$BUILD_CGROUP/cgroup.procs" || exit 1
- make oldconfig
- make modules_prepare
- make -j"$numcores" || exit 2
- make modules_install
- make install
- run_in_portage_cgroup schedtool -D -e emerge -avuDNg @module-rebuild
- )
-}
-
-prepare_config(){
- cp "/usr/src/config-$1" ".config"
- test -f "./.config" || { echo "Kopieren der config fehlgeschlagen" && exit 2; }
-}
-
-print_version(){
- echo "Building version:"
- head -n5 Makefile
- echo ""
-}
-
-build_timeout(){
- unset key
- read -n 1 -s -r -p "Press any key to continue" key
-}
-
-case "$1" in
- check)
- emerge -puDNg @world
- ;;
- sync|ref|refresh)
- root_check
- emaint sync -A
- ;;
- world|dup)
- root_check
- run_in_portage_cgroup schedtool -D -e emerge -avuDNg @world "${@:2}"
- exit 0
- ;;
- wbdeps|wbd)
- root_check
- run_in_portage_cgroup schedtool -D -e emerge -avuDNg --with-bdeps=y --binpkg-changed-deps=y @world "${@:2}"
- exit 0
- ;;
- daily|all)
- root_check
- emaint sync -A
- run_in_portage_cgroup schedtool -D -e emerge -avuDNg @world "${@:2}"
- exit 0
- ;;
- pkg|in)
- root_check
- run_in_portage_cgroup schedtool -D -e emerge -avg "${@:2}"
- exit 0
- ;;
- skipkernel)
- root_check
- /usr/bin/emerge -avuDNg @world --exclude=dist-kernel --exclude=gentoo-kernel --exclude=gentoo-sources --exclude=git-sources "${@:2}"
- exit 0
- ;;
- preserved)
- root_check
- run_in_portage_cgroup schedtool -D -e emerge -av @preserved-rebuild
- exit 0
- ;;
- wholeworld)
- PORTAGE_CPUS=32
- root_check
- schedtool -B -e /usr/bin/emerge -avuDeg --with-bdeps=y --usepkg=n --binpkg-changed-deps=n --keep-going=y @world --exclude="acct-group/* acct-user/* virtual/* app-eselect/* sys-kernel/* sys-firmware/* dev-python/* dev-java/* dev-ruby/* dev-perl/* dev-lua/* dev-php/* dev-tex/* dev-texlive/* x11-themes/* */*-bin"
- exit 0
- ;;
- search|se)
- root_check
- /usr/bin/emerge --search "${@:2}"
- exit 0
- ;;
- clean|rm)
- root_check
- /usr/bin/emerge -a --depclean "${@:2}"
- exit 0
- ;;
- checkclean)
- /usr/bin/emerge -apv --depclean "${@:2}"
- exit 0
- ;;
- live)
- root_check
- /usr/bin/emerge -av @live-rebuild
- ;;
- flatpaks)
- flatpak update
- ;;
- kernel-live)
- root_check
- cd_to_src
- test -f "./.config" || exit 2
- print_version
- build_timeout
- build_kernel_in_cgroup
- # call_makejobs
- cd -
- exit 0
- ;;
- kernel-gentoo)
- root_check
- cd "/usr/src/linux" || exit 2
- clean_builddir
- prepare_config "gentoo"
- print_version
- build_timeout
- call_makejobs
- echo "Build completed. Remember to upgrayyedd /usr/src/config-* if necessary."
- exit 0
- ;;
- kernel-llvm)
- root_check
- cd "/usr/src/linux" || exit 2
- clean_builddir
- prepare_config "llvm"
- print_version
- build_timeout
- call_makejobs
- echo "Build completed. Remember to upgrayyedd /usr/src/config-* if necessary."
- exit 0
- ;;
- kernel-git)
- root_check
- cd "/usr/src/linux" || exit 2
- clean_builddir
- prepare_config "git"
- print_version
- build_timeout
- call_makejobs
- echo "Build completed. Remember to upgrayyedd /usr/src/config-* if necessary."
- exit 0
- ;;
- kernel-server)
- root_check
- cd "/usr/src/linux" || exit 2
- clean_builddir
- prepare_config "server"
- print_version
- build_timeout
- call_makejobs
- echo "Build completed. Remember to upgrayyedd /usr/src/config-* if necessary."
- exit 0
- ;;
- clean-kernels)
- root_check
- echo "Relevant files in /boot:"
- echo ""
- command ls -1 --hide='*/' /boot/System.map* /boot/initramfs* /boot/vmlinuz*
- eclean-kernel -aA -L std
- ;;
- log)
- grep -i --color=auto "completed" /var/log/emerge.log
- echo "note: use 'date -d @[unixtime]' to convert the timestamp"
- ;;
- unlog)
- grep -i --color=auto "unmerging" /var/log/emerge.log
- echo "note: use 'date -d @[unixtime]' to convert the timestamp"
- ;;
- testify)
- run_in_portage_cgroup bash -c '
- echo "PID: $$"
- echo "cgroup:"
- cat /proc/$$/cgroup
- echo "allowed CPUs:"
- grep Cpus_allowed_list /proc/$$/status
- '
- ;;
- *)
- printf '\nCurrently available commands:\n\n'
- printf '%s\t%s\n' \
- 'sync ' 'synchronize repos' \
- 'check ' 'check for updates' \
- 'search | se ' 'search packages' \
- 'refresh | ref ' 'sync and update world' \
- ' ' ' ' \
- 'livebuilds ' 'update all live packages' \
- 'flatpaks ' 'update flatpaks' \
- 'world | dup ' 'update world' \
- ' ' ' ' \
- 'wholeworld ' 'rebuild everything from scratch' \
- ' ' ' ' \
- '-- ' 'install packages given as argument' \
- ' ' ' ' \
- 'kernel-gentoo ' 'build kernel flavor: gentoo' \
- 'kernel-llvm ' 'build kernel flavor: llvm' \
- 'kernel-git ' 'build kernel flavor: git' \
- 'kernel-server ' 'build kernel flavor: server' \
- ' ' ' ' \
- 'checkclean ' 'check for orphans' \
- 'clean ' 'clean orphaned packages' \
- 'preserved ' 'clean-up old libraries' \
- 'clean-kernels ' 'remove old kernels' \
- ' ' ' ' \
- 'log ' 'view recently emerged files' \
- 'unlog ' 'view recently unmerged files' \
- ' ' ' '
- ;;
-esac
--- /dev/null
+#!/usr/bin/env bash
+
+BUILD_CGROUP="/sys/fs/cgroup/openrc.portage-cgroup"
+KERNEL_SRC="/usr/src/linux"
+
+# ----- generic helpers -------------------------------------------------------
+
+die() {
+ echo "Error: $*" >&2
+ exit 1
+}
+
+root_check() {
+ (( EUID == 0 )) || die "You have to run this script with sudo"
+}
+
+require_gentoo() {
+ grep -qi 'gentoo' /etc/os-release ||
+ die "Dieses System basiert nicht auf Gentoo"
+}
+
+# ----- build cgroup ----------------------------------------------------------
+
+check_build_cgroup() {
+ [[ -d "$BUILD_CGROUP" ]] ||
+ die "Build cgroup does not exist: $BUILD_CGROUP"
+
+ [[ -w "$BUILD_CGROUP/cgroup.procs" ]] ||
+ die "Cannot write to $BUILD_CGROUP/cgroup.procs"
+}
+
+enter_build_cgroup() {
+ check_build_cgroup
+
+ echo "$BASHPID" > "$BUILD_CGROUP/cgroup.procs" ||
+ die "Could not enter build cgroup"
+}
+
+run_in_build_cgroup() {
+ (
+ enter_build_cgroup
+ exec "$@"
+ )
+}
+
+emerge_build() {
+ run_in_build_cgroup \
+ schedtool -D -e \
+ /usr/bin/emerge "$@"
+}
+
+# ----- portage operations ---------------------------------------------------
+
+sync_all_repos() {
+ emaint sync -A
+}
+
+sync_repos_auto() {
+ emaint sync -a
+}
+
+update_world() {
+ emerge_build -avuDNg @world "$@"
+}
+
+daily_update() {
+ sync_repos_auto && update_world "$@"
+}
+
+update_world_with_bdeps() {
+ emerge_build \
+ -avuDNg \
+ --with-bdeps=y \
+ --binpkg-changed-deps=y \
+ @world "$@"
+}
+
+# ----- kernel build ---------------------------------------------------------
+
+cd_to_src() {
+ [[ -L "$KERNEL_SRC" ]] ||
+ die "Symlink $KERNEL_SRC ist nicht gesetzt"
+
+ [[ -f "$KERNEL_SRC/Makefile" ]] ||
+ die "$KERNEL_SRC zeigt nicht auf einen gueltigen Kernel-Quellbaum"
+
+ cd "$KERNEL_SRC" ||
+ die "Verzeichniswechsel nach $KERNEL_SRC fehlgeschlagen"
+}
+
+prepare_config() {
+ local flavor=$1
+ local config="/usr/src/config-$flavor"
+
+ [[ -f "$config" ]] ||
+ die "Kernel config does not exist: $config"
+
+ cp -- "$config" .config ||
+ die "Kopieren von $config nach .config fehlgeschlagen"
+}
+
+print_version() {
+ echo
+ echo "Building version:"
+ head -n 5 Makefile
+ echo
+}
+
+build_timeout() {
+ local key
+ read -n 1 -s -r -p "Press any key to continue" key
+ echo
+}
+
+build_kernel_in_cgroup() {
+ (
+ # Enter the build cgroup once. All make processes and their children
+ # inherit the cpuset/resource limits from here on.
+ enter_build_cgroup
+
+ local jobs
+ jobs=$(nproc) || exit 2
+
+ echo "Using $jobs build jobs from the cgroup CPU set."
+ echo
+
+ schedtool -D -e make oldconfig || exit 2
+ schedtool -D -e make modules_prepare || exit 2
+ schedtool -D -e make -j"$jobs" || exit 2
+ schedtool -D -e make modules_install || exit 2
+ schedtool -D -e make install || exit 2
+ )
+}
+
+kernel_build() {
+ local flavor=${1:-live}
+
+ root_check
+ cd_to_src
+
+ if [[ "$flavor" == "live" ]]; then
+ [[ -f .config ]] ||
+ die "No .config found in $KERNEL_SRC"
+ else
+ make mrproper ||
+ die "make mrproper failed"
+
+ prepare_config "$flavor"
+ fi
+
+ print_version
+ build_timeout
+
+ build_kernel_in_cgroup ||
+ die "Kernel build failed"
+
+ emerge_build -avuDNg @module-rebuild ||
+ die "Module rebuild failed"
+
+ echo
+ echo "Build completed."
+
+ if [[ "$flavor" != "live" ]]; then
+ echo "Remember to upgrayyedd /usr/src/config-* if necessary."
+ fi
+}
+
+# ----- main -----------------------------------------------------------------
+
+require_gentoo
+
+case "${1:-}" in
+ check)
+ /usr/bin/emerge -puDNg @world
+ ;;
+
+ sync|ref|refresh)
+ root_check
+ sync_all_repos
+ ;;
+
+ daily|all)
+ root_check
+ daily_update "${@:2}"
+ ;;
+
+ world|dup)
+ root_check
+ update_world "${@:2}"
+ ;;
+
+ wbdeps|wbd)
+ root_check
+ update_world_with_bdeps "${@:2}"
+ ;;
+
+ pkg|in)
+ root_check
+ emerge_build -avg "${@:2}"
+ ;;
+
+ skipkernel)
+ root_check
+ emerge_build \
+ -avuDNg \
+ @world \
+ --exclude=dist-kernel \
+ --exclude=gentoo-kernel \
+ --exclude=gentoo-sources \
+ --exclude=git-sources \
+ "${@:2}"
+ ;;
+
+ preserved)
+ root_check
+ emerge_build -av @preserved-rebuild
+ ;;
+
+ wholeworld)
+ root_check
+
+ # Intentional exception: this is the only build path outside the
+ # Portage cgroup. A full world rebuild may use all CPUs because the
+ # machine is expected to be otherwise idle / running only TTYs.
+ schedtool -B -e /usr/bin/emerge \
+ -avuDeg \
+ --with-bdeps=y \
+ --usepkg=n \
+ --binpkg-changed-deps=n \
+ --keep-going=y \
+ @world \
+ --exclude="acct-group/* acct-user/* virtual/* app-eselect/* sys-kernel/* sys-firmware/* dev-python/* dev-java/* dev-ruby/* dev-perl/* dev-lua/* dev-php/* dev-tex/* dev-texlive/* x11-themes/* */*-bin"
+ ;;
+
+ search|se)
+ /usr/bin/emerge --search "${@:2}"
+ ;;
+
+ clean|rm)
+ root_check
+ /usr/bin/emerge -a --depclean "${@:2}"
+ ;;
+
+ checkclean)
+ /usr/bin/emerge -apv --depclean "${@:2}"
+ ;;
+
+ live)
+ root_check
+ emerge_build -av @live-rebuild
+ ;;
+
+ flatpaks)
+ flatpak update
+ ;;
+
+ kernel-live)
+ kernel_build live
+ ;;
+
+ kernel-gentoo)
+ kernel_build gentoo
+ ;;
+
+ kernel-llvm)
+ kernel_build llvm
+ ;;
+
+ kernel-git)
+ kernel_build git
+ ;;
+
+ kernel-server)
+ kernel_build server
+ ;;
+
+ clean-kernels)
+ root_check
+
+ echo "Relevant files in /boot:"
+ echo
+
+ command ls -1 \
+ /boot/System.map* \
+ /boot/initramfs* \
+ /boot/vmlinuz* 2>/dev/null
+
+ eclean-kernel -aA -L std
+ ;;
+
+ log)
+ grep -i --color=auto "completed" /var/log/emerge.log
+ echo "note: use 'date -d @[unixtime]' to convert the timestamp"
+ ;;
+
+ unlog)
+ grep -i --color=auto "unmerging" /var/log/emerge.log
+ echo "note: use 'date -d @[unixtime]' to convert the timestamp"
+ ;;
+
+ testify)
+ root_check
+
+ run_in_build_cgroup bash -c '
+ echo "PID: $$"
+ echo
+ echo "cgroup:"
+ cat /proc/$$/cgroup
+ echo
+ echo "allowed CPUs:"
+ grep Cpus_allowed_list /proc/$$/status
+ echo
+ echo "nproc:"
+ nproc
+ '
+ ;;
+
+ *)
+ cat <<'HELP'
+
+Currently available commands:
+
+sync | ref | refresh forcibly synchronize all repositories
+check check for updates
+search | se search packages
+all | daily sync enabled repositories and update world
+world | dup update world without repository sync
+wbdeps | wbd update world including build dependencies
+pkg | in install packages given as arguments
+skipkernel update world except kernel packages
+
+live update all live packages
+flatpaks update flatpaks
+
+wholeworld rebuild everything from scratch using all CPUs
+
+kernel-live build current kernel tree/config
+kernel-gentoo build kernel flavor: gentoo
+kernel-llvm build kernel flavor: llvm
+kernel-git build kernel flavor: git
+kernel-server build kernel flavor: server
+
+checkclean check for orphans
+clean | rm clean orphaned packages
+preserved rebuild preserved libraries
+clean-kernels remove old kernels
+
+log view recently emerged files
+unlog view recently unmerged files
+testify show build cgroup placement
+
+HELP
+ ;;
+esac