Linuxtuning

Das Beschleunigen von Linux ist nur begrenzt möglich.
Wenn man mehrere Platten hat, kann man das OS auf diese verteilen.
Der DMA-Modus lässt sich auf meinen SATA-Platten mit hdparm nicht einschalten.

hdparm -d1 -X66 /dev/sda

Jedoch ließen sich die Schalter für lookahead(A1),Schreibcache(W1) und AccousticMode(M254) einschalten.
Eintrag in der /etc/init.d/boot.local:

hdparm -W1 -A1 -M254 /dev/sda
hdparm -W1 -A1 -M254 /dev/sdb
hdparm -W1 -A1 -M254 /dev/sdc


Beispieleintrag in der /etc/fstab :

/dev/disk/by-id/..... / ext3  data=writeback,async,noatime,acl,user_xattr,commit=15 0 0

deaktiviere Änderungen an der Zugriffzeit für den Ordner /daten und verhindere so unnötige Schreibzugriffe auf die Platte:

chattr -R +A /daten

weitere Tools:

iostat 5 -m
iostat -x /dev/sda
smartctl -A /dev/sda
smartctl -s lookahead=on /dev/sda
smartctl -s wcache=on /dev/sda

ausführlicher Geschwindigkeitstest ohne OS-Cache und diskpuffer:

hdparm -tT --direct /dev/sda

vergrößere den Readaheadcache um die Festplatte zu beschleunigen:

vorher dreimal die Geschwindigkeit testen:

hdparm -t /dev/sda

dann den aktuellen Cachewert ermitteln:

blockdev --getra /dev/sda
blockdev --getfra /dev/sda

dann den Cachewert vergrößern:

blockdev --setra 2048 /dev/sda
blockdev --setfra 2048 /dev/sda

dann noch dreimal testen ob es was gebracht hat:

hdparm -t /dev/sda

Startreihenfolge von Diensten ändern:

Beispiel: Starte den avahi-daemon nach dem mailserver exim4:
ändere in der Datei /etc/init.d/.depend.start den Eintrag:

avahi-daemon: dbus rsyslog

in:

avahi-daemon: dbus rsyslog exim4


Starte xdm vor dem ntp-daemon:

xdm: ntp kbd dbus acpid

in:

xdm: kbd dbus acpid

danach Rechner testweise neustarten.

Dienste wenn möglich parallel starten:

echo CONCURRENCY=shell >>/etc/default/rcS  

danach Rechner testweise neustarten.

parallele Komprimierung benutzen

#debian 9
apt-get install pigz lbzip2 pbzip2 pxz
#suse 42.3
zypper in pigz lbzip2 pbzip2 pixz
ln -s /usr/bin/lbzip2 /usr/local/bin/bzip2
ln -s /usr/bin/lbzip2 /usr/local/bin/bunzip2
ln -s /usr/bin/lbzip2 /usr/local/bin/bzcat
ln -s /usr/bin/pigz /usr/local/bin/gzip
ln -s /usr/bin/pigz /usr/local/bin/gunzip
ln -s /usr/bin/pigz /usr/local/bin/zcat
update-alternatives --install /bin/gzip  gzip /usr/bin/pigz 100
update-alternatives --install /bin/xz  xz /usr/bin/pixz 100
update-alternatives --install /bin/bzip2  bzip2 /usr/bin/lbzip2 100
#debian:
ln -s /usr/bin/pxz /usr/local/bin/xz
#suse:
ln -s /usr/bin/pixz /usr/local/bin/xz
export TAR_OPTIONS="--use-compress-program=pigz"

oder das Programm parallel verwenden:

parallel gzip ::: *.log


Tmp-Verzeichnis in den RAM verlagern

cp /usr/share/systemd/tmp.mount /etc/systemd/system/
systemctl enable tmp.mount

Auslagerung auf Festplatte einschränken

echo "vm.swappiness = 10" >>/etc/sysctl.d/swappiness.conf

Inode-Cache vergößern

echo "vm.vfs_cache_pressure=50" >>/etc/sysctl.d/vfs_cache.conf


Speicherverbrauch geordnet anzeigen:

(http://suckup.de/linux/speicherverbrauch-anzeigen-lassen/)

speicher.sh
#!/bin/bash
 
/usr/bin/printf "%-6s %-9s %s\n" "PID" "Total" "Command" 
/usr/bin/printf "%-6s %-9s %s\n" "---" "-----" "-------" 
 
for PID in `/bin/ps -e | /usr/bin/awk '$1 ~ /[0-9]+/ { print $1 }'` do
   CMD=`/bin/ps -o comm -p ${PID} | /usr/bin/tail -1`
   TOTAL=`/usr/bin/pmap ${PID} 2>/dev/null | /usr/bin/tail -1 | /usr/bin/awk '{ print $1 }'`
   [ -n "${TOTAL}" ] && /usr/bin/printf "%-6s %-9s %s\n" "${PID}" "${TOTAL}"  "${CMD}" 
done | /usr/bin/sort -n -k2

oder:

ps -e -orss=,args= | sort -nr | head