LINUX에서 IRQ분배
작업 목적 및 개요 : 기존에는 CPU#0에서 SSL관련 처리를 전담하였으나, SSL처리 관련 CPU 작업을 분산시킴으로써 성능 향상에 목적이 있음
자동으로 분배되는 irqblance의 경우 #1Core 부터 분배되나, 수동으로 적절하게 분배 되는 것이 중요함
작업 시간은 약 10분 내외이며, 즉시 확인 가능
시스템 재기동 없이 운영 중 적용 가능하며, 네트워크 단절이 발생되지 않음
작업 내용 ;
1. SSL가속 관련 드라이버의 IRQ 확인
# cat /proc/interrupts |grep pkp
83: 60 0 0 0 0 0 1 0 0 0 0 0 0 0 IR-PCI-MSI-edge pkp_dev
85: 0 0 0 0 0 0 0 1 0 0 0 0 0 0 IR-PCI-MSI-edge pkp_dev
87: 0 0 0 0 0 0 0 0 4 0 0 0 0 0 IR-PCI-MSI-edge pkp_dev
89: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 IR-PCI-MSI-edge pkp_dev
91: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 IR-PCI-MSI-edge pkp_dev
93: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 IR-PCI-MSI-edge pkp_dev
95: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 IR-PCI-MSI-edge pkp_dev
97: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 IR-PCI-MSI-edge pkp_dev
99: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 IR-PCI-MSI-edge pkp_dev
2. IRQ를 CPU 코어로 분배
# vi tuneirq_pkp.sh
echo 40 > /proc/irq/83/smp_affinity
echo 80 > /proc/irq/85/smp_affinity
echo 100 > /proc/irq/87/smp_affinity
echo 200 > /proc/irq/89/smp_affinity
echo 400 > /proc/irq/91/smp_affinity
echo 800 > /proc/irq/93/smp_affinity
echo 1000 > /proc/irq/95/smp_affinity
echo 2000 > /proc/irq/97/smp_affinity
echo f > /proc/irq/99/smp_affinity
3. rc.local에 등록하여 부팅 때 적용되도록 설정
# vi /etc/rc.local
./root/tuneirq_pkp
4. 정상 분배 유무 확인
# watch -n 1 -d "cat /proc/interrupts |grep pkp"
-> 기존 CPU#0 으로 쏠리던 부분이 고르게 분배되는 것이 확인됨
5. 그 외 NIC 등도 적절하게 IRQ분배를 해주는 것 만으로도 효율적인 리소스 운영 가능