---
title: WordCount（IO+CPU密集型）
description: "WordCount是IO+CPU密集型场景，二者均衡，采用单队列的deadline调度算法反而不好，采用多队列的mq-deadline算法并调整相关IO参数，能得到更优的性能结果。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengbds/ecosystemEnable/Spark/kunpengspark2xhdpeu_05_0028.html
sourcePath: /source/zh/kunpengbds/ecosystemEnable/Spark/kunpengspark2xhdpeu_05_0028.html
indexId: c190164797659e320332b853d524ea95b0f31ca28cb06e1d615f80fa79e222ef76
---
# WordCount（IO+CPU密集型）

#### 目的

WordCount是IO+CPU密集型场景，二者均衡，采用单队列的deadline调度算法反而不好，采用多队列的mq-deadline算法并调整相关IO参数，能得到更优的性能结果。


#### 方法

- 对以下配置进行修改，其中sd$i指所有参与测试的磁盘名称：
  1 2 3 4 5 6 echo mq-deadline > /sys/block/sd$i/queue/scheduler echo 512 > /sys/block/sd$i/queue/nr_requests echo 8192 > /sys/block/sd$i/queue/read_ahead_kb echo 500 > /proc/sys/vm/dirty_expire_centisecs echo 100 > /proc/sys/vm/dirty_writeback_centisecs echo 5 > /proc/sys/vm/dirty_background_ratio


- 该场景下采用3-5倍总核数作为数据分片的Partitions和Parallelism进行数据分片，减小单Task文件大小，对性能有提升。可以使用以下分片设置：
  1 2 spark.sql.shuffle.partitions 300 spark.default.parallelism 600

- HiBench在配置文件中指定的运行核数、内存大小可以根据实际环境来做调整，来达到最优性能。例如对于鲲鹏920 5220处理器，WordCount场景建议以下Executor参数：
  1 2 3 4 yarn.executor.num 51 yarn.executor.cores 6 spark.executor.memory 13G spark.driver.memory 36G

- 调整JDK参数，对性能有正面影响（3%性能提升），以下配置添加到spark.conf文件中：
  1 2 spark.executor.extraJavaOptions -XX:+UseNUMA -XX:BoxTypeCachedMax=100000 -XX:ParScavengePerStrideChunk=8192 spark.yarn.am.extraJavaOptions -XX:+UseNUMA -XX:BoxTypeCachedMax=100000 -XX:ParScavengePerStrideChunk=8192"
