Слияние происходит, когда два запроса ввода-вывода могут быть объединены в один запрос большей -длины. Например, запись в блок 1234, за которой следует запись в блок 1235, может быть объединена в один запрос ввода-вывода для блока 1234 длиной 2 блока. Поскольку такого рода ситуации могут быть довольно распространенными, стоит приложить усилия к ядру, чтобы выполнить слияние, освободить структуру запросов ввода-вывода и уменьшить накладные расходы на прерывания.
Если вас интересуют более подробные статистические данные по этому аспекту ввода-вывода, см. руководство пользователя btt в формате pdf , которое является частью blktrace
.
Я думаю, это то, что вы ищете.
Я смоделировал этот ввод JSON:
[
{
"name" : "Allow",
"source" : [ "*", "0.0.0.0"]
},
{
"name" : "Disallow",
"source" : [ "foo", "9.8.7.5", "4.3.2.1"]
}
]
и немного изменил ваш пример скрипта:
#!/bin/bash
test() {
local file="test.json"
while read val; do
local name
local source
name=$(jq --raw-output '.name' <<< "${val}")
source=$(jq --raw-output '.source | join(" ")' <<< "${val}")
echo __test "${name}" "${source}"
done < <(cat ${file} | jq -rc '.[]')
}
test
и я получаю:
./test.sh
__test Allow * 0.0.0.0
__test Disallow foo 9.8.7.5 4.3.2.1