Skip to content

Instantly share code, notes, and snippets.

@holly
Created December 20, 2015 06:21
Show Gist options
  • Save holly/3ae1fa2f5d608d7c3ee7 to your computer and use it in GitHub Desktop.
Save holly/3ae1fa2f5d608d7c3ee7 to your computer and use it in GitHub Desktop.
#!/bin/sh
#--- memo --
# 参考:https://sites.google.com/site/glusterfstech/install
#--- vm.swappiness [デフォルト:60]
# 0にすると物理メモリを使いきるまでswapしなくなる。
#--- vm.dirty_background_ratio [デフォルト:10]
#メモリに対してdirtyデータが指定の%になるとバックグラウンドでpdflushが動作
#値を小さくすればこまめに掃除をし、メモリが空く可能性がある。
#--- kernel.sched_wakeup_granularity_ns [デフォルト:2000000]
#--- /sys/block/sda/queue/scheduler [デフォルト:cfq]
#------ noop
#------ anticipatory
#------ cfq
# 全てのプロセスに均等にI/Oを割り当てる。
# 多数のプロセスが細かいI/Oを大量に発生させる場合はこれが良い。
#------ deadline
# I/O待ち時間の限界点(deadline)を設けて、
# それが近付いたものを優先的に処理していく。
# 少数のプロセスが大量のI/Oを発生させる環境に適している。
#--- /sys/block/sda/queue/nr_requests [デフォルト:128]
# 数値を増やすことによりより多くのI/O要求を受け付けられるようになるが、
# I/Oデバイスの種類によってはQueueが長過ぎる状態となり、
# 逆にパフォーマンスが悪化する場合もある
function set_sysctl(){
local SYSCTL_NAME=$1
local SYSCTL_NEW=$2
SYSCTL_OLD=$(sysctl -n "${SYSCTL_NAME}")
sysctl -w ${SYSCTL_NAME}=${SYSCTL_NEW}
local MESSAGE="${SYSCTL_NAME} ${SYSCTL_OLD} >> ${SYSCTL_NEW}"
logging "${MESSAGE}"
}
function logging(){
local MESSAGGE=$1
echo "${MESSAGE}"
logger -ip local0.info ${MESSAGE}
}
function set_sys(){
local SCHEDULER_NEW="deadline"
local NR_REQUESTS_NEW=256
for IOSCHED_PATH in $(ls -d /sys/block/*/queue/iosched 2>/dev/null); do
if [ -z ${IOSCHED_PATH} ]
then
continue
else
QUEUE_DIR=$(dirname ${IOSCHED_PATH})
SCHEDULER_PATH="${QUEUE_DIR}/scheduler"
NR_REQUESTS_PATH="${QUEUE_DIR}/nr_requests"
if [ -f ${SCHEDULER_PATH} ]
then
SCHEDULER_OLD=$(cat "${SCHEDULER_PATH}")
echo "${SCHEDULER_NEW}" > ${SCHEDULER_PATH}
MESSAGE="${SCHEDULER_PATH} ${SCHEDULER_OLD} >> ${SCHEDULER_NEW}"
logging "${MESSAGE}"
fi
if [ -f ${NR_REQUESTS_PATH} ]
then
NR_REQUESTS_OLD=$(cat ${NR_REQUESTS_PATH})
echo "${NR_REQUESTS_NEW}" > ${NR_REQUESTS_PATH}
MESSAGE="${NR_REQUESTS_PATH} ${NR_REQUESTS_OLD} >> ${NR_REQUESTS_NEW}"
logging "${MESSAGE}"
fi
fi
done
}
set_sysctl "vm.swappiness" "10"
set_sysctl "vm.dirty_background_ratio" "1"
set_sysctl "kernel.sched_wakeup_granularity_ns" "15"
set_sys
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment