Ben's

인터럽트가 많을때 CPU별로 분산 시켰을때 효과 테스트 본문

리눅스

인터럽트가 많을때 CPU별로 분산 시켰을때 효과 테스트

Ben Ko (SINCE 2013) 2013. 1. 16. 16:13
728x90

* 아래의 방법으로 인위적으로 megasas 장치의 CPU별 인터럽트 분배를 조작함.
- CPU0 번만 쓰게 하기
[root@nhkotest ~]# echo '0000001' > /proc/irq/78/smp_affinity; cat /proc/irq/78/smp_affinity
00000001

- 전체 CPU 갯수 만큼 분산시켜 쓰게 하기
[root@nhkotest ~]# echo 'ffffffff' > /proc/irq/78/smp_affinity; cat /proc/irq/78/smp_affinity
ffffffff

 

* 테스트 결과: 위와 같이 조작한후 iotest 해봄.

[irqbalance 끄고, CPU 1개만 처리하게 했을때]
Version  1.03       ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine   Size:chnk K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
nhkotest. 50240M:1k 40736  60 54634  21 35272  10 71871  94 73512   7 118.2   0
                    ------Sequential Create------ --------Random Create--------
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                100  4417  12 +++++ +++  3117  12  4439  13 +++++ +++  2711  10
nhkotest.com,50240M:1k,40736,60,54634,21,35272,10,71871,94,73512,7,118.2,0,100,4417,12,+++++,+++,3117,12,4439,13,+++++,+++,2711,10

 

[irqbalance 끄고, 골고루 분배되게 했을때]
[root@nhkotest iotest]# cat iotest.txt
Version  1.03       ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine   Size:chnk K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
nhkotest. 50240M:1k 40035  59 54857  21 33272   9 71769  93 72173   6 167.7   0
                    ------Sequential Create------ --------Random Create--------
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                100  3937  12 +++++ +++  2763  12  3893  12 +++++ +++  2482  11
nhkotest.com,50240M:1k,40035,59,54857,21,33272,9,71769,93,72173,6,167.7,0,100,3937,12,+++++,+++,2763,12,3893,12,+++++,+++,2482,11

 

* 테스트 결과: 별다른 차이가 없거나 1개의 cpu 에서 처리하는게 약간 더 성능이 좋게 나옴.

* 기타 특이사항
- irqbalance stop 시에 인터럽트가 제대로 분배되는 경우가 관찰되었으며 irqbalance start 시에 cpu 0 번만 쓰는 경우도 있었음.