CPU网卡亲和绑定

                #!/bin/bash
                #
                # Copyright (c) 2014, Intel Corporation
                #
                # Redistribution and use in source and binary forms, with or without
                # modification, are permitted provided that the following conditions are met:
                #
                #     * Redistributions of source code must retain the above copyright notice,
                #       this list of conditions and the following disclaimer.
                #     * Redistributions in binary form must reproduce the above copyright
                #       notice, this list of conditions and the following disclaimer in the
                #       documentation and/or other materials provided with the distribution.
                #     * Neither the name of Intel Corporation nor the names of its contributors
                #       may be used to endorse or promote products derived from this software
                #       without specific prior written permission.
                #
                # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
                # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
                # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
                # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
                # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
                # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
                # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
                # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
                # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
                # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
                #
                # Affinitize interrupts to cores
                #
                # typical usage is (as root):
                # set_irq_affinity -x local eth1 <eth2> <eth3>
                #
                # to get help:
                # set_irq_affinity
                
                usage()
                {
                    echo
                    echo "Usage: $0 [-x] {all|local|remote|one|custom} [ethX] <[ethY]>"
                    echo "    options: -x        Configure XPS as well as smp_affinity"
                    echo "    options: {remote|one} can be followed by a specific node number"
                    echo "    Ex: $0 local eth0"
                    echo "    Ex: $0 remote 1 eth0"
                    echo "    Ex: $0 custom eth0 eth1"
                    echo "    Ex: $0 0-7,16-23 eth0"
                    echo
                    exit 1
                }
                
                if [ "$1" == "-x" ]; then
                    XPS_ENA=1
                    shift
                fi
                
                num=^[0-9]+$
                # Vars
                AFF=$1
                shift
                
                case "$AFF" in
                    remote)    [[ $1 =~ $num ]] && rnode=$1 && shift ;;
                    one)    [[ $1 =~ $num ]] && cnt=$1 && shift ;;
                    all)    ;;
                    local)    ;;
                    custom)    ;;
                    [0-9]*)    ;;
                    -h|--help)    usage ;;
                    "")        usage ;;
                    *)        IFACES=$AFF && AFF=all ;;    # Backwards compat mode
                esac
                
                # append the interfaces listed to the string with spaces
                while [ "$#" -ne "0" ] ; do
                    IFACES+=" $1"
                    shift
                done
                
                # for now the user must specify interfaces
                if [ -z "$IFACES" ]; then
                    usage
                    exit 1
                fi
                
                # support functions
                
                set_affinity()
                {
                    VEC=$core
                    if [ $VEC -ge 32 ]
                    then
                        MASK_FILL=""
                        MASK_ZERO="00000000"
                        let "IDX = $VEC / 32"
                        for ((i=1; i<=$IDX;i++))
                        do
                            MASK_FILL="${MASK_FILL},${MASK_ZERO}"
                        done
                
                        let "VEC -= 32 * $IDX"
                        MASK_TMP=$((1<<$VEC))
                        MASK=$(printf "%X%s" $MASK_TMP $MASK_FILL)
                    else
                        MASK_TMP=$((1<<$VEC))
                        MASK=$(printf "%X" $MASK_TMP)
                    fi
                
                    printf "%s" $MASK > /proc/irq/$IRQ/smp_affinity
                    printf "%s %d %s -> /proc/irq/$IRQ/smp_affinity\n" $IFACE $core $MASK
                    if ! [ -z "$XPS_ENA" ]; then
                        printf "%s %d %s -> /sys/class/net/%s/queues/tx-%d/xps_cpus\n" $IFACE $core $MASK $IFACE $((n-1))
                        printf "%s" $MASK > /sys/class/net/$IFACE/queues/tx-$((n-1))/xps_cpus
                    fi
                }
                
                # Allow usage of , or -
                #
                parse_range () {
                        RANGE=${@//,/ }
                        RANGE=${RANGE//-/..}
                        LIST=""
                        for r in $RANGE; do
                        # eval lets us use vars in {#..#} range
                                [[ $r =~ .. ]] && r="$(eval echo {$r})"
                        LIST+=" $r"
                        done
                    echo $LIST
                }
                
                # Affinitize interrupts
                #
                setaff()
                {
                    CORES=$(parse_range $CORES)
                    ncores=$(echo $CORES | wc -w)
                    n=1
                
                    # this script only supports interrupt vectors in pairs,
                    # modification would be required to support a single Tx or Rx queue
                    # per interrupt vector
                
                    queues="${IFACE}-.*TxRx"
                
                    irqs=$(grep "$queues" /proc/interrupts | cut -f1 -d:)
                    [ -z "$irqs" ] && irqs=$(grep $IFACE /proc/interrupts | cut -f1 -d:)
                    [ -z "$irqs" ] && irqs=$(for i in `ls -Ux /sys/class/net/$IFACE/device/msi_irqs` ;                             do grep "$i:.*TxRx" /proc/interrupts | grep -v fdir | cut -f 1 -d : ;                             done)
                    [ -z "$irqs" ] && echo "Error: Could not find interrupts for $IFACE"
                
                    echo "IFACE CORE MASK -> FILE"
                    echo "======================="
                    for IRQ in $irqs; do
                        [ "$n" -gt "$ncores" ] && n=1
                        j=1
                        # much faster than calling cut for each
                        for i in $CORES; do
                            [ $((j++)) -ge $n ] && break
                        done
                        core=$i
                        set_affinity
                        ((n++))
                    done
                }
                
                # now the actual useful bits of code
                
                # these next 2 lines would allow script to auto-determine interfaces
                #[ -z "$IFACES" ] && IFACES=$(ls /sys/class/net)
                #[ -z "$IFACES" ] && echo "Error: No interfaces up" && exit 1
                
                # echo IFACES is $IFACES
                
                CORES=$(</sys/devices/system/cpu/online)
                [ "$CORES" ] || CORES=$(grep ^proc /proc/cpuinfo | cut -f2 -d:)
                
                
                node_dir=/sys/devices/system/node
                for i in $(ls -d $node_dir/node*); 
                do i=${i/*node/} corelist[$i]=$(<$node_dir/node${i}/cpulist) done for IFACE in $IFACES; do dev_dir=/sys/class/net/$IFACE/device [ -e $dev_dir/numa_node ] && node=$(<$dev_dir/numa_node) [ "$node" ] && [ "$node" -gt 0 ] || node=0 case "$AFF" in local) CORES=${corelist[$node]} ;; remote) [ "$rnode" ] || { [ $node -eq 0 ] && rnode=1 || rnode=0; } CORES=${corelist[$rnode]} ;; one) [ -n "$cnt" ] || cnt=0 CORES=$cnt ;; all) CORES=$CORES ;; custom) echo -n "Input cores for $IFACE (ex. 0-7,15-23): " read CORES ;; [0-9]*) CORES=$AFF ;; *) usage exit 1 ;; esac # call the worker function setaff done IRQBALANCE_ON=`ps ax | grep -v grep | grep -q irqbalance; echo $?` if [ "$IRQBALANCE_ON" == "0" ] ; then echo " WARNING: irqbalance is running and will" echo " likely override this script‘s affinitization." echo " Please stop the irqbalance service and/or execute" echo " ‘killall irqbalance‘" fi
                相关文章
                相关标签/搜索
                香港王中王论坛资枓香港正香四肖八码期期准精选资料app,四肖八码期期准精选资料最新官方版app预约 庆阳市| 荆门市| 靖远县| 银川市| 都匀市| 阳信县| 额敏县| 汶川县| 巴南区| 双辽市| 东阳市| 来凤县| 大丰市| 右玉县| 渝中区| 留坝县| 施甸县| 南和县| 迁安市| 闽清县| 甘肃省| 丽水市| 炎陵县| 通榆县| 吉林市| 江源县| 大足县| 洪泽县| 宁强县| 万全县| 平阴县| 永顺县| 娄底市| 类乌齐县| 南康市| 定襄县| 汽车| 肥东县| 墨江| 温泉县| 瓦房店市| 读书| 湟中县| 富裕县| 汨罗市| 观塘区| 三江| 澜沧| 凤阳县| 宁武县| 仙桃市| 建宁县| 屯门区| 鸡东县| 西昌市| 香港| 永城市| 缙云县| 东方市| 兴山县| 连城县| 监利县| 东海县| 扎囊县| 无棣县| 凌海市| 临江市| 邹城市| 友谊县| 天柱县| 仲巴县| 绵竹市| 遵义市| 南阳市| 龙泉市| 张家口市| 曲沃县| 称多县| 马山县| 福州市| 梁河县| 五河县| 灵璧县| 广州市| 高清| 塘沽区| 河北区| 闻喜县| 建水县| 永福县| 冷水江市| 仪陇县| 兴化市| 江达县| 洮南市| 清涧县| 新竹市| 界首市| 德州市| 德清县| 通河县| 昌吉市| 桑植县| 青州市| 延安市| 宁城县| 封开县| 开远市| 手游| 博白县| 巴青县| 海宁市| 鹤壁市| 民勤县| 长春市| 姜堰市| 遵化市| 大化| 西青区| 乳山市| 彩票| 南靖县| 静宁县| 牡丹江市| 台北市| 从化市| 南木林县| 麟游县| 商南县| 汝城县| 安图县| 乌鲁木齐县| 青铜峡市| 潜山县| 当雄县| 西林县| 正镶白旗| 陈巴尔虎旗| 枣庄市| 禹城市| 湖北省| 宁明县| 依安县| 静宁县| 长宁县| 邵武市| 东城区| 会昌县| 兴和县| 正阳县| 峨山| 勐海县| 河北省| 尚志市| 香河县| 报价| 安陆市| 大余县| 鸡西市| 伊通| 奎屯市| 柳州市| 巴里| 买车| 准格尔旗| 齐齐哈尔市| 东源县| 靖江市| 得荣县| 南木林县| 封丘县| 县级市| 红安县| 家居| 青田县| 卓尼县| 宣汉县| 栖霞市| 开远市| 青冈县| 福安市| 抚州市| 城市| 邹平县| 武川县| 安新县| 石柱| 岱山县| 沙湾县| 清涧县| 清流县| 阳江市| 兰州市| 高陵县| 小金县| 余庆县| 区。| 禄丰县| 杭锦旗| 阿鲁科尔沁旗| 通化市| 侯马市| 繁峙县| 梁河县| 收藏| 聂荣县| 景泰县| 原平市| 永丰县| 邛崃市| 宾阳县| 大宁县| 大同市| 云梦县| 南雄市| 道真| 毕节市| 山东省| 日土县| 莎车县| 淄博市| 蒲城县| 南陵县| 黄平县| 健康| 年辖:市辖区| 琼中| 乐昌市| 会同县| 京山县| 赤峰市| 长顺县| 双流县| 南陵县| 屯昌县| 盐城市| 治多县| 兴安盟| 郯城县| 黔西| 绿春县| 松溪县| 大庆市| 柳河县| 周至县| 龙川县| 昌都县| 北票市| 水富县| 虞城县| 酉阳| 永寿县| 图木舒克市| 大余县| 延津县| 潜山县| 锡林浩特市| 济阳县| 普兰店市| 玛纳斯县| 巴南区| 商都县| 盐源县| 平江县| 凤山市| 莆田市| 确山县| 恩施市| 西林县| 仁化县| 乾安县| 屏边| 铜鼓县| 集安市| 马山县| 平遥县| 康乐县| 霍山县| 炉霍县| 潼关县| 高邑县| 临汾市| 东乡县| 和政县| 互助| 赤壁市| 元阳县| 重庆市| 同心县| 广丰县| 房山区| 磐石市| 旺苍县| 宁化县| 临城县| 师宗县| 邢台县| 昔阳县| 宝山区| 钟祥市| 辽源市| 怀来县| 故城县| 迭部县| 建宁县| 区。| 石泉县| 常州市| 奉节县| 甘南县| 龙川县| 扎赉特旗| 梁山县| 隆安县| 华池县| 山阳县| 琼中| 永顺县| 保康县| 三明市| 文成县| 中江县| 茌平县| 娱乐| 太原市| 周至县| 马龙县| 临夏市| 固阳县| 太仆寺旗| 静安区| 运城市| 西吉县| 陕西省| 镇康县| 于都县| 玉屏| 宁武县| 蒙自县| 巴林右旗| 武汉市| 桑植县| 梅州市| 灵山县| 云浮市| 上蔡县| 类乌齐县| 泌阳县| 右玉县| 湘西| 万宁市| 绥滨县| 怀化市| 清流县| 西充县| 开原市| 垫江县| 漳浦县| 丹巴县| 中西区| 阿瓦提县| 和政县| 科技| 元阳县| 延川县| 张家界市| 泗洪县| 高碑店市| 沾益县| 怀宁县| 大同县| 利津县| 共和县| 灵石县| 乐平市| 西吉县| 大港区| 滦南县| 文化| 永顺县| 双峰县| 民县| 会泽县| 罗甸县| 木兰县| 宁明县| 开远市| 左云县| 衡阳市| 乌恰县| 高阳县| 永仁县| 河北省| 阳城县| 海淀区| 定结县| 仙居县| 陕西省| 德保县| 漳州市| 红河县| 晋中市| 连云港市| 固始县| 平果县| 神木县| 班玛县| 石泉县| 天全县| 祁阳县| 孝义市| 健康| 繁昌县| 肃宁县| 巴中市| 龙海市| 砚山县| 紫云| 朝阳市| 新沂市| 永福县| 武隆县| 册亨县| 六盘水市| 彩票| 新泰市| 宽城| 福州市| 沈丘县| 云南省| 澎湖县| 蓬莱市| 黄陵县| 江陵县| 宜都市| 沾益县| 江油市| 辽宁省| 沛县| 凤翔县| 陆川县| 松滋市| 邳州市| 甘孜| 上犹县| 长海县| 平湖市| 宁蒗| 无极县| 闽清县| 佛坪县| 西丰县| 长垣县| 通江县| 贺州市| 鹤庆县| 大姚县| 德兴市| 河北省| 泽普县| 五指山市| 蒙山县| 营口市| 普宁市| 宣化县| 修水县| 西安市| 二手房| 措勤县| 江川县| 大同市| 四平市| 虎林市| 陵川县| 府谷县| 瑞丽市| 平昌县| 乐陵市| 山西省| 长泰县| 九寨沟县| 乌拉特后旗| 昌宁县| 虎林市| 新安县| 防城港市| 西昌市| 凤山市| 克山县| 伊春市| 江山市| 无极县| 安多县| 广东省| 阿城市| 渭源县| 常宁市| 黔东| 凤台县| 小金县| 泰宁县| 柳江县| 新丰县| 日照市| 青冈县| 灵石县| 三河市| 万荣县| 泸州市| 兴仁县| 安丘市| 无为县| 西宁市| 绥棱县| 金堂县| 淳安县| 潢川县| 嘉黎县| 股票| 巍山| 两当县| 明星| 富宁县| 罗平县| 济源市| 突泉县| 叙永县| 蛟河市| 南木林县| 进贤县| 江安县| 龙里县| 财经| 栾城县| 五河县| 苏尼特右旗| 舟山市| 东明县| 泰安市| 垣曲县| 内江市| 湘潭县| 雅安市| 古浪县| 光泽县| 武山县| 海城市| 吴川市| 南宁市| 那曲县| 盐源县| 图片| 朝阳市| 阳原县| 都安| 榆中县| 都兰县| 民乐县| 兴文县| 柘荣县| 工布江达县| 屯昌县| 东莞市| 沿河| 阿坝| 伊春市| 宿州市| 安图县| 龙井市| 穆棱市| 蒙自县| 常州市| 汽车| 安岳县| 灵宝市| 磐安县| 延安市| 响水县| 勐海县| 梨树县| 开原市| 汤阴县| 东乡| 天祝| 南雄市| 湘阴县| 普陀区| 资讯| 木兰县| 昌吉市| 永州市| 通化县| 曲靖市| 木里| 崇明县| 英吉沙县| 无为县| 新丰县| 楚雄市| 年辖:市辖区| 襄城县| 巴彦县| 虹口区| 马鞍山市| 晋江市| 友谊县| 墨脱县| 施甸县| 星子县| 祥云县| 泰顺县| 大邑县| 玛纳斯县| 永泰县| 浏阳市| http://m.hz0j0r8vo.fun http://m.jx1870inputv.fun http://wap.jx1870holev.fun http://www.hz0j3r7vo.fun http://wap.hz0j0r3vo.fun http://jx1870hozev.fun http://wap.jx1870icev.fun http://www.jx1870fanv.fun http://hz0j0r0vo.fun http://jx1870growv.fun http://jx1870googlev.fun http://wap.jx1870juzpv.fun http://www.jx1870gearv.fun http://m.jx1870gardenv.fun http://www.hz0j2r5vo.fun http://wap.hz0j0r0vo.fun http://wap.jx1870institutev.fun http://jx1870handlev.fun