Move slabs out of chunks.
This commit is contained in:
@@ -50,7 +50,7 @@ reg_size_compute() {
|
||||
reg_size=$((${grp} + ${delta}*${ndelta}))
|
||||
}
|
||||
|
||||
run_size() {
|
||||
slab_size() {
|
||||
lg_p=$1
|
||||
lg_grp=$2
|
||||
lg_delta=$3
|
||||
@@ -59,22 +59,22 @@ run_size() {
|
||||
pow2 ${lg_p}; p=${pow2_result}
|
||||
reg_size_compute ${lg_grp} ${lg_delta} ${ndelta}
|
||||
|
||||
# Compute smallest run size that is an integer multiple of reg_size.
|
||||
try_run_size=${p}
|
||||
try_nregs=$((${try_run_size} / ${reg_size}))
|
||||
# Compute smallest slab size that is an integer multiple of reg_size.
|
||||
try_slab_size=${p}
|
||||
try_nregs=$((${try_slab_size} / ${reg_size}))
|
||||
perfect=0
|
||||
while [ ${perfect} -eq 0 ] ; do
|
||||
perfect_run_size=${try_run_size}
|
||||
perfect_slab_size=${try_slab_size}
|
||||
perfect_nregs=${try_nregs}
|
||||
|
||||
try_run_size=$((${try_run_size} + ${p}))
|
||||
try_nregs=$((${try_run_size} / ${reg_size}))
|
||||
if [ ${perfect_run_size} -eq $((${perfect_nregs} * ${reg_size})) ] ; then
|
||||
try_slab_size=$((${try_slab_size} + ${p}))
|
||||
try_nregs=$((${try_slab_size} / ${reg_size}))
|
||||
if [ ${perfect_slab_size} -eq $((${perfect_nregs} * ${reg_size})) ] ; then
|
||||
perfect=1
|
||||
fi
|
||||
done
|
||||
|
||||
run_size_pgs=$((${perfect_run_size} / ${p}))
|
||||
slab_size_pgs=$((${perfect_slab_size} / ${p}))
|
||||
}
|
||||
|
||||
size_class() {
|
||||
@@ -117,7 +117,7 @@ size_class() {
|
||||
|
||||
if [ ${lg_size} -lt $((${lg_p} + ${lg_g})) ] ; then
|
||||
bin="yes"
|
||||
run_size ${lg_p} ${lg_grp} ${lg_delta} ${ndelta}; pgs=${run_size_pgs}
|
||||
slab_size ${lg_p} ${lg_grp} ${lg_delta} ${ndelta}; pgs=${slab_size_pgs}
|
||||
else
|
||||
bin="no"
|
||||
pgs=0
|
||||
@@ -278,7 +278,7 @@ cat <<EOF
|
||||
* ndelta: Delta multiplier. size == 1<<lg_grp + ndelta<<lg_delta
|
||||
* psz: 'yes' if a multiple of the page size, 'no' otherwise.
|
||||
* bin: 'yes' if a small bin size class, 'no' otherwise.
|
||||
* pgs: Run page count if a small bin size class, 0 otherwise.
|
||||
* pgs: Slab page count if a small bin size class, 0 otherwise.
|
||||
* lg_delta_lookup: Same as lg_delta if a lookup table size class, 'no'
|
||||
* otherwise.
|
||||
* NTBINS: Number of tiny bins.
|
||||
|
Reference in New Issue
Block a user