Minor IRQ affinity unification

This commit is contained in:
Thomas Kaiser 2017-04-25 15:47:20 +02:00
parent 4d831855b7
commit f1ecde50b1

View File

@ -21,22 +21,23 @@ collect_information() {
ARCH=$(lscpu | awk '/Architecture/ {print $2}')
HARDWARE=$(awk '/Hardware/ {print $3}' </proc/cpuinfo | head -n1)
[ "X${HARDWARE}" = "XAllwinner" ] && HARDWARE=$(awk '/Hardware/ {print $4}' </proc/cpuinfo | head -n1)
[ "X${HARDWARE}" = "XSAMSUNG" ] && HARDWARE=$(awk '/Hardware/ {print $4}' </proc/cpuinfo)
[ "X${HARDWARE}" = "XSAMSUNG" ] && HARDWARE=$(awk '/Hardware/ {print $4}' </proc/cpuinfo | head -n1)
KERNELID=$(uname -r)
} # collect_information
set_io_scheduler() {
for i in $( lsblk -idn -o NAME ); do
read ROTATE </sys/block/$i/queue/rotational
# mechanical drives
if [ "$ROTATE" = 1 ]; then echo cfq >/sys/block/$i/queue/scheduler;
echo -e "[\e[0;32m ok \x1B[0m] Setting cfg I/O scheduler for $i"
# solid state drives
elif [ "$ROTATE" = 0 ]; then echo noop >/sys/block/$i/queue/scheduler;
echo -e "[\e[0;32m ok \x1B[0m] Setting noop I/O scheduler for $i"
fi
case ${ROTATE} in
1) # mechanical drives
echo cfq >/sys/block/$i/queue/scheduler
echo -e "[\e[0;32m ok \x1B[0m] Setting cfg I/O scheduler for $i"
;;
0) # flash based
echo noop >/sys/block/$i/queue/scheduler
echo -e "[\e[0;32m ok \x1B[0m] Setting noop I/O scheduler for $i"
;;
esac
done
} # set_io_scheduler
@ -101,20 +102,20 @@ prepare_board() {
echo 8 >/proc/irq/$(awk -F":" "/sdcard/ {print \$1}" </proc/interrupts | sed 's/\ //g')/smp_affinity
;;
Marvell) # Clearfog: Send network IRQs to cpu1 on both kernels
for i in $(awk -F':' '/mwlwifi|mvneta|eth0/{print $1}' /proc/interrupts); do
for i in $(awk -F':' '/mwlwifi|mvneta|eth0/{print $1}' /proc/interrupts | sed 's/\ //g'); do
echo 2 >/proc/irq/$i/smp_affinity
done
;;
ODROIDC) # ODROID-C0/C1/C1+
echo 1 >/proc/irq/$(awk -F":" "/usb1/ {print \$1}" </proc/interrupts | sed 's/\ //g')/smp_affinity_list
for i in $(awk -F':' '/Mali_/{print $1}' /proc/interrupts); do echo 1 >/proc/irq/${i}/smp_affinity_list; done
for i in $(awk -F':' '/Mali_/{print $1}' </proc/interrupts | sed 's/\ //g'); do echo 1 >/proc/irq/${i}/smp_affinity_list; done
echo 2 >/proc/irq/$(awk -F":" "/usb2/ {print \$1}" </proc/interrupts | sed 's/\ //g')/smp_affinity_list
echo 3 >/proc/irq/$(awk -F":" "/eth0/ {print \$1}" </proc/interrupts | sed 's/\ //g')/smp_affinity_list
echo 7 >/sys/class/net/eth0/queues/rx-0/rps_cpus
;;
ODROID-C2) # send eth0 to cpu3, mmc/usb2 to cpu2 and usb1 to cpu1
# Basics: http://forum.odroid.com/viewtopic.php?f=115&t=8121#p65777
for i in $(awk -F':' '/sd_emmc|usb2/{print $1}' /proc/interrupts); do
for i in $(awk -F':' '/sd_emmc|usb2/{print $1}' </proc/interrupts | sed 's/\ //g'); do
echo 1 >/proc/irq/$i/smp_affinity_list
done
echo 2 >/proc/irq/$(awk -F":" "/usb1/ {print \$1}" </proc/interrupts | sed 's/\ //g')/smp_affinity_list
@ -127,7 +128,7 @@ prepare_board() {
echo 8 >/proc/irq/$(awk -F":" "/usb5/ {print \$1}" </proc/interrupts | sed 's/\ //g')/smp_affinity
echo 16 >/proc/irq/$(awk -F":" "/dw-mci/ {print \$1}" </proc/interrupts | sed 's/\ //g' | tail -1)/smp_affinity
echo 32 >/proc/irq/$(awk -F":" "/dw-mci/ {print \$1}" </proc/interrupts | sed 's/\ //g' | head -1)/smp_affinity
for i in $(awk -F':' '/11800000.mali/{print $1}' /proc/interrupts); do
for i in $(awk -F':' '/11800000.mali/{print $1}' </proc/interrupts | sed 's/\ //g'); do
echo 64 >/proc/irq/$i/smp_affinity
done
echo 7 >/sys/class/net/eth0/queues/rx-0/rps_cpus
@ -138,10 +139,10 @@ prepare_board() {
:
;;
sun6i) # Banana Pi M2: process eth0 on cpu3, SDIO on cpu2, USB on cpu1
for i in $(awk -F':' '/hcd:usb/{print $1}' /proc/interrupts); do
for i in $(awk -F':' '/hcd:usb/{print $1}' /proc/interrupts | sed 's/\ //g'); do
echo 2 >/proc/irq/$i/smp_affinity
done
for i in $(awk -F':' '/sunxi-mmc/{print $1}' /proc/interrupts); do
for i in $(awk -F':' '/sunxi-mmc/{print $1}' /proc/interrupts | sed 's/\ //g'); do
echo 4 >/proc/irq/$i/smp_affinity
done
echo 8 >/proc/irq/$(awk -F":" '/eth0/ {print $1}' </proc/interrupts | sed 's/\ //g')/smp_affinity
@ -185,7 +186,7 @@ prepare_board() {
;;
"Orange Pi Lite"|"NanoPi Air"|"Lime A33"|"Orange Pi Zero Plus 2"*)
# Send SDIO/mmc IRQs to cpu3
for i in $(awk -F':' '/sunxi-mmc/{print $1}' /proc/interrupts); do
for i in $(awk -F':' '/sunxi-mmc/{print $1}' </proc/interrupts | sed 's/\ //g'); do
echo 8 >/proc/irq/$i/smp_affinity
done
;;
@ -193,10 +194,10 @@ prepare_board() {
# Wifi module reload workaround / fix
[[ -n $(lsmod | grep 8189es) ]] && rmmod 8189es && modprobe 8189es
# Send SDIO to cpu1, USB to cpu2, Ethernet to cpu3
for i in $(awk -F':' '/sunxi-mmc/{print $1}' /proc/interrupts); do
for i in $(awk -F':' '/sunxi-mmc/{print $1}' </proc/interrupts | sed 's/\ //g'); do
echo 2 >/proc/irq/$i/smp_affinity
done
for i in $(awk -F':' '/hcd:usb/{print $1}' /proc/interrupts); do
for i in $(awk -F':' '/hcd:usb/{print $1}' </proc/interrupts | sed 's/\ //g'); do
echo 4 >/proc/irq/$i/smp_affinity
done
echo 8 >/proc/irq/$(awk -F":" "/${GbE}/ {print \$1}" </proc/interrupts | sed 's/\ //g')/smp_affinity