|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
## Minio Cloud Storage, (C) 2017, 2018 Minio, Inc.
|
|
|
|
##
|
|
|
|
## Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
## you may not use this file except in compliance with the License.
|
|
|
|
## You may obtain a copy of the License at
|
|
|
|
##
|
|
|
|
## http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
##
|
|
|
|
## Unless required by applicable law or agreed to in writing, software
|
|
|
|
## distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
## See the License for the specific language governing permissions and
|
|
|
|
## limitations under the License.
|
|
|
|
|
|
|
|
# This script changes protected files, and must be run as root
|
|
|
|
|
|
|
|
for i in $(echo /sys/block/*/queue/iosched 2>/dev/null); do
|
|
|
|
iosched_dir=$(echo "${i}" | awk '/iosched/ {print $1}')
|
|
|
|
[ -z "${iosched_dir}" ] && {
|
|
|
|
continue
|
|
|
|
}
|
|
|
|
## Change each disk ioscheduler to be "deadline"
|
|
|
|
## Deadline dispatches I/Os in batches. A batch is a
|
|
|
|
## sequence of either read or write I/Os which are in
|
|
|
|
## increasing LBA order (the one-way elevator). After
|
|
|
|
## processing each batch, the I/O scheduler checks to
|
|
|
|
## see whether write requests have been starved for too
|
|
|
|
## long, and then decides whether to start a new batch
|
|
|
|
## of reads or writes
|
|
|
|
path=$(dirname "${iosched_dir}")
|
|
|
|
[ -f "${path}/scheduler" ] && {
|
|
|
|
echo "deadline" > "${path}/scheduler" 2>/dev/null || true
|
|
|
|
}
|
|
|
|
## This controls how many requests may be allocated
|
|
|
|
## in the block layer for read or write requests.
|
|
|
|
## Note that the total allocated number may be twice
|
|
|
|
## this amount, since it applies only to reads or
|
|
|
|
## writes (not the accumulate sum).
|
|
|
|
[ -f "${path}/nr_requests" ] && {
|
|
|
|
echo "256" > "${path}/nr_requests" 2>/dev/null || true
|
|
|
|
}
|
|
|
|
## This is the maximum number of kilobytes
|
|
|
|
## supported in a single data transfer at
|
|
|
|
## block layer.
|
|
|
|
[ -f "${path}/max_sectors_kb" ] && {
|
|
|
|
echo "1024" > "${path}/max_sectors_kb" 2>/dev/null || true
|
|
|
|
}
|
|
|
|
done
|