Minor IRQ affinity unification
This commit is contained in:
parent
4d831855b7
commit
f1ecde50b1
@ -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
|
||||
|
||||
Loading…
Reference in New Issue
Block a user