#!/usr/bin/perl # # 指定NICインタフェースの割り込みをコア2,3に割り当てる。 # use strict; use warnings; my $infile = "/proc/interrupts"; my $nicname = "enp3s0"; # 検索するNICインタフェース名 my $mode = 0; # 動作モード if (@ARGV >= 1) { $nicname = $ARGV[0]; } if (@ARGV >= 2) { if ($ARGV[1] eq "set") { $mode = 1; } if ($ARGV[1] eq "debug") { $mode = 2; } } open(IN, "$infile") || die "can not open $infile\n"; while ( ) { if ( $_ =~ /\b$nicname/ ) { my @a = split(); $a[0] =~ s/:$//; # IRQ番号、先頭ワードの末尾':'文字を削除 if ($mode == 0) { print; } else { if ($mode == 1) { # set ? system("echo c > /proc/irq/$a[0]/smp_affinity"); # コア2,3 } print "echo c > /proc/irq/$a[0]/smp_affinity\n"; } } } close(IN);