Tweak 출처: https://obihoernchen.net/1416/odroid-xu4-tune-network-and-usb-speed/
멀티 프로세서 시스템의 경우 하드웨어 인터럽트를 한 프로세서에서만 다룰 필요가 없습니다. 오드로이드 XU4의 AP도 멀티 프로세서이니, 각 USB에서 발생하는 인터럽트를 각기 다른 프로세서로 보내 성능을 올립시다.
170621
https://forum.odroid.com/viewtopic.php?f=146&t=26986&sid=3611efeb6c2314a807ba6eb688f56aba
4.9.27 버전부터 기본적으로 적용되어 있는 것으로 보입니다. 이전 버전 사용자들만 적용해주세요 :)
1. 현재 상태 확인
오드로이드의 프로세서들을 봅시다.
awesometic@odroid:~$ lscpu -e
CPU SOCKET CORE ONLINE MAXMHZ MINMHZ
0 0 0 yes 1300.0000 200.0000
1 0 1 yes 1300.0000 200.0000
2 0 2 yes 1300.0000 200.0000
3 0 3 yes 1300.0000 200.0000
4 1 4 yes 2000.0000 200.0000
5 1 5 yes 2000.0000 200.0000
6 1 6 yes 2000.0000 200.0000
7 1 7 yes 2000.0000 200.0000
CPU 0~3은 최고 1.3Ghz로 돌 수 있지만, CPU 4~7은 2Ghz까지 올라갈 수 있네요. 엑시노스가 도입한 ARM의 big.Little 기술 뭐 그런 것 같습니다. 각 인터럽트는 동작 속도가 더 빠른 CPU 4~7이 처리하는 게 맞겠죠?
각 인터럽트에 대해 어떤 프로세서가 활동하는진 명령어로 간단히 알아낼 수 있다고 합니다.
awesometic@odroid:~$ grep -E 'CPU0|usb' /proc/interrupts
CPU0 CPU1 CPU2 CPU3 CPU4 CPU5 CPU6 CPU7
91: 1 0 0 0 0 0 0 0 GIC-0 103 Edge ehci_hcd:usb1, ohci_hcd:usb2
143: 10335 0 0 0 0 0 0 0 GIC-0 104 Edge xhci-hcd:usb3
144: 267886 0 0 0 0 0 0 0 GIC-0 105 Edge xhci-hcd:usb5
뜯어보면, usb1, usb2에 대한 작업은 91번으로 넘기고, 이는 CPU0이 처리합니다. 그리고 usb3에 대한 작업은 143번, usb5에 대한 작업은 144번인데 얘네도 CPU0에서 처리하네요.
출처 블로그에 따르면 usb2 는 USB 2.0에 대한 인터럽트가 발생하는 곳이고, usb3는 USB 3.0 포트, usb5는 두 번째 USB 3.0 포트임과 동시에 기가비트 이더넷에도 연결되어 있다고 합니다.
블로그에서 제안하는 대로 usb3과 usb5에 대한 인터럽트를 빠른 CPU4, CPU5로 넘기도록 수정하겠습니다.
2. IRQ 튜닝
우분투가 부팅될 때, 부트 과정 마지막에 /etc/rc.local 파일이 항상 실행됩니다. 이 파일에 적당한 명령어를 넣어 줍시다.
sudo vi /etc/rc.local
기본으로 적혀있는 주석 덩어리 바로 밑에 아래 내용을 추가합니다.
# Move USB and network irqs to A15 CPU cluster
# usb2
echo 6 > /proc/irq/91/smp_affinity_list
# usb3
echo 5 > /proc/irq/143/smp_affinity_list
# network (usb3)
echo 4 > /proc/irq/144/smp_affinity_list
오드로이드를 재부팅합니다.
sudo reboot
3. 결과 확인
잘 적용됐는 지 다시 한번 확인해 봅니다.
awesometic@odroid:~$ grep -E 'CPU0|usb' /proc/interrupts
CPU0 CPU1 CPU2 CPU3 CPU4 CPU5 CPU6 CPU7
91: 1 0 0 0 0 0 0 0 GIC-0 103 Edge ehci_hcd:usb1, ohci_hcd:usb2
143: 1065 0 0 0 0 3113 0 0 GIC-0 104 Edge xhci-hcd:usb3
144: 569 0 0 0 18234 0 0 0 GIC-0 105 Edge xhci-hcd:usb5
보시다시피 CPU4와 CPU5도 일하고 있네요. 144번이 네트워크, 143번이 제 유전원 USB 3.0 허브가 꼽힌 USB 3.0에 대한 인터럽트를 담당하고 있었습니다.
드디어 모든 과정이 끝났습니다.
지금까지 다룬 것들 중, 좀 더 세세한 나머지 부분은 적당히 입맛대로 수정하셔서 사용하시면 될 것 같습니다.
금방 끝날 거라 생각했는데.. 생각보다 너무 오래 걸렸네요. 보기 안 좋게 쓰인 것 같아 스스로 천천히 다듬어가겠습니다.
이젠... 2019년 초까진 오드로이드 포맷할 일 없을 겁니다..... :)
전체 글 목록
2017/04/23 - [오드로이드 XU4] - 오드로이드 XU4 를 개인 클라우드 서버로 - 1. 우분투 설치
2017/04/24 - [오드로이드 XU4] - 오드로이드 XU4 를 개인 클라우드 서버로 - 2. Webmin 설치
2017/04/25 - [오드로이드 XU4] - 오드로이드 XU4 를 개인 클라우드 서버로 - 3. 외장하드 마운트
2017/04/25 - [오드로이드 XU4] - 오드로이드 XU4 를 개인 클라우드 서버로 - 4. Samba
2017/04/28 - [오드로이드 XU4] - 오드로이드 XU4 를 개인 클라우드 서버로 - 5. Plex
2017/04/30 - [오드로이드 XU4] - 오드로이드 XU4 를 개인 클라우드 서버로 - 6. Nginx, PHP, MariaDB
2017/05/02 - [오드로이드 XU4] - 오드로이드 XU4 를 개인 클라우드 서버로 - 7. h5ai
2017/05/02 - [오드로이드 XU4] - 오드로이드 XU4 를 개인 클라우드 서버로 - 8. Wordpress
2017/05/02 - [오드로이드 XU4] - 오드로이드 XU4 를 개인 클라우드 서버로 - 9. 무료 도메인
2017/05/02 - [오드로이드 XU4] - 오드로이드 XU4 를 개인 클라우드 서버로 - 10. 무료 SSL
2017/05/02 - [오드로이드 XU4] - 오드로이드 XU4 를 개인 클라우드 서버로 - IRQ Balancing
2017/05/08 - [오드로이드 XU4] - 오드로이드 XU4 를 개인 클라우드 서버로 - CPU Governor
'NAS & ODROID > NAS, ODROID' 카테고리의 다른 글
오드로이드 XU4Q와 CloudShell2로 NAS 구축하기 - 개요 (0) | 2017.06.21 |
---|---|
오드로이드 XU4 를 개인 클라우드 서버로 - CPU Governor (6) | 2017.05.08 |
MariaDB, phpmyadmin 설치하기 (0) | 2017.01.23 |
ODROID + OMV ?? (0) | 2017.01.22 |