Created
December 20, 2015 06:21
-
-
Save holly/3ae1fa2f5d608d7c3ee7 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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