|
| 1 | +--- |
| 2 | +group: Sequential cutoff |
| 3 | +--- |
| 4 | + |
| 5 | +Sequential cutoff feature allows to detect sequential data streams |
| 6 | +and redirect them to backend volume (bypassing the cache). |
| 7 | + |
| 8 | +-------------------------------------------------------------------------------- |
| 9 | +-------------------------------------------------------------------------------- |
| 10 | +title: Setting sequential cutoff policy for core |
| 11 | +id: policy_core |
| 12 | +--- |
| 13 | + |
| 14 | +The management tool shall allow to specify sequential cutoff policy |
| 15 | +for given core. |
| 16 | + |
| 17 | +-------------------------------------------------------------------------------- |
| 18 | +-------------------------------------------------------------------------------- |
| 19 | +title: Setting sequential cutoff policy for all cores in given cache instance |
| 20 | +id: policy_all_cores |
| 21 | +--- |
| 22 | + |
| 23 | +The management tool shall allow to specify sequential cutoff policy |
| 24 | +for all cores associated with given cache instance at once. |
| 25 | + |
| 26 | +-------------------------------------------------------------------------------- |
| 27 | +-------------------------------------------------------------------------------- |
| 28 | +title: Allowed sequential cutoff policies |
| 29 | +id: allowed_policies |
| 30 | +--- |
| 31 | + |
| 32 | +There shall be three sequential cutoff policies: |
| 33 | + |
| 34 | +1. always |
| 35 | +2. full |
| 36 | +3. never |
| 37 | + |
| 38 | +-------------------------------------------------------------------------------- |
| 39 | +-------------------------------------------------------------------------------- |
| 40 | +title: Default sequential cutoff policy |
| 41 | +id: policy_default |
| 42 | +--- |
| 43 | + |
| 44 | +The default sequential cutoff policy shall be **full**. |
| 45 | + |
| 46 | +-------------------------------------------------------------------------------- |
| 47 | +-------------------------------------------------------------------------------- |
| 48 | +title: Setting sequential cutoff threshold for core |
| 49 | +id: threshold_core |
| 50 | +--- |
| 51 | + |
| 52 | +The management tool shall allow to specify sequential cutoff threshold |
| 53 | +for given core. |
| 54 | + |
| 55 | +-------------------------------------------------------------------------------- |
| 56 | +-------------------------------------------------------------------------------- |
| 57 | +title: Setting sequential cutoff threshold for all cores in given cache instance |
| 58 | +id: threshold_all_cores |
| 59 | +--- |
| 60 | + |
| 61 | +The management tool shall allow to specify sequential cutoff threshold |
| 62 | +for all cores associated with given cache instance at once. |
| 63 | + |
| 64 | +-------------------------------------------------------------------------------- |
| 65 | +-------------------------------------------------------------------------------- |
| 66 | +title: Allowed sequential cutoff theshold values |
| 67 | +id: threshold_values |
| 68 | +--- |
| 69 | + |
| 70 | +It shall be possible to specify sequential cutoff threshold value in range |
| 71 | +from 1 to 4194181 KiB inclusive. |
| 72 | + |
| 73 | +-------------------------------------------------------------------------------- |
| 74 | +-------------------------------------------------------------------------------- |
| 75 | +title: Default sequential cutoff threshold value |
| 76 | +id: threshold_default |
| 77 | +--- |
| 78 | + |
| 79 | +The default sequential cutoff threshold shall be 1024 KiB. |
| 80 | + |
| 81 | +-------------------------------------------------------------------------------- |
| 82 | +-------------------------------------------------------------------------------- |
| 83 | +title: Setting sequential cutoff promotion count for core |
| 84 | +id: promotion_count_core |
| 85 | +--- |
| 86 | + |
| 87 | +The management tool shall allow to specify sequential cutoff promotion count |
| 88 | +for given core. |
| 89 | + |
| 90 | +-------------------------------------------------------------------------------- |
| 91 | +-------------------------------------------------------------------------------- |
| 92 | +title: >- |
| 93 | + Setting sequential cutoff promotion count for all cores in given |
| 94 | + cache instance |
| 95 | +id: promotion_count_all_cores |
| 96 | +--- |
| 97 | + |
| 98 | +The management tool shall allow to specify sequential cutoff promotion count |
| 99 | +for all cores associated with given cache instance at once. |
| 100 | + |
| 101 | +-------------------------------------------------------------------------------- |
| 102 | +-------------------------------------------------------------------------------- |
| 103 | +title: Allowed sequential cutoff promotion count values |
| 104 | +id: promotion_count_values |
| 105 | +--- |
| 106 | + |
| 107 | +It shall be possible to specify sequential cutoff promotion count value |
| 108 | +in range from 0 to 65535 inclusive. |
| 109 | + |
| 110 | +-------------------------------------------------------------------------------- |
| 111 | +-------------------------------------------------------------------------------- |
| 112 | +title: Default sequential cutoff promotion count value |
| 113 | +id: promotion_count_default |
| 114 | +--- |
| 115 | + |
| 116 | +The default sequential cutoff promotion count shall be 8. |
| 117 | + |
| 118 | +-------------------------------------------------------------------------------- |
| 119 | +-------------------------------------------------------------------------------- |
| 120 | +title: Loading sequential cutoff configuration on cache load |
| 121 | +id: loading_configuration |
| 122 | +--- |
| 123 | + |
| 124 | +All sequential cutoff parameters shall be loaded from cache metadata for each |
| 125 | +core on cache load. |
| 126 | + |
| 127 | +-------------------------------------------------------------------------------- |
| 128 | +-------------------------------------------------------------------------------- |
| 129 | +title: Sequential cutoff stream detection |
| 130 | +id: operation |
| 131 | +--- |
| 132 | + |
| 133 | +The sequential cutoff shall detect streams of sequential IO requests. |
| 134 | + |
| 135 | +-------------------------------------------------------------------------------- |
| 136 | +-------------------------------------------------------------------------------- |
| 137 | +title: Sequential cutoff operation |
| 138 | +id: operation |
| 139 | +--- |
| 140 | + |
| 141 | +When lenght of the stream reaches the cutoff threshold, each next IO request |
| 142 | +which continues the stream and is not full dirty hit shall be handled |
| 143 | +in Pass-Through mode. |
| 144 | + |
| 145 | +-------------------------------------------------------------------------------- |
| 146 | +-------------------------------------------------------------------------------- |
| 147 | +title: Sequential cutoff for reads and writes |
| 148 | +id: reads_and_writes |
| 149 | +--- |
| 150 | + |
| 151 | +The sequential cutoff shall track streams of read and write IO requests |
| 152 | +separately. |
| 153 | + |
| 154 | +-------------------------------------------------------------------------------- |
| 155 | +-------------------------------------------------------------------------------- |
| 156 | +title: Multiple per-CPU sequential cutoff streams |
| 157 | +id: per_cpu_multiple_streams |
| 158 | +--- |
| 159 | + |
| 160 | +The sequential cutoff shall be able to detect up to 128 per-CPU streams. |
| 161 | + |
| 162 | +-------------------------------------------------------------------------------- |
| 163 | +-------------------------------------------------------------------------------- |
| 164 | +title: Multiple shared sequential cutoff streams |
| 165 | +id: shared_multiple_streams |
| 166 | +--- |
| 167 | + |
| 168 | +The sequential cutoff shall be able to detect up to 64 shared streams. |
| 169 | + |
| 170 | +-------------------------------------------------------------------------------- |
| 171 | +-------------------------------------------------------------------------------- |
| 172 | +title: Sequential cutoff per-CPU stream continuation |
| 173 | +id: per_cpu_stream_continuation |
| 174 | +--- |
| 175 | + |
| 176 | +When new IO request is being handled, the sequential cutoff shall first try to |
| 177 | +account it to one of per-CPU streams local to the CPU on which the IO request |
| 178 | +is being handled. |
| 179 | + |
| 180 | +-------------------------------------------------------------------------------- |
| 181 | +-------------------------------------------------------------------------------- |
| 182 | +title: Sequential cutoff shared stream continuation |
| 183 | +id: shared_stream_continuation |
| 184 | +--- |
| 185 | + |
| 186 | +When new IO request is being handled and there is no per-CPU stream which can |
| 187 | +be continued by this IO request, the sequential cutoff shall try to account it |
| 188 | +to one of shared streams. |
| 189 | + |
| 190 | +-------------------------------------------------------------------------------- |
| 191 | +-------------------------------------------------------------------------------- |
| 192 | +title: Sequential cutoff stream creation |
| 193 | +id: stream_creation |
| 194 | +--- |
| 195 | + |
| 196 | +When new IO request is being handled and there is neither per-CPU nor shared |
| 197 | +stream which can be countinued by this IO request, the sequential cutoff shall |
| 198 | +create new per-CPU stream starting with this IO request. |
| 199 | + |
| 200 | +-------------------------------------------------------------------------------- |
| 201 | +-------------------------------------------------------------------------------- |
| 202 | +title: Sequential cutoff stream promotion |
| 203 | +id: stream_promotion |
| 204 | +--- |
| 205 | + |
| 206 | +When number of IO requests accounted to given per-CPU stream reaches |
| 207 | +the promotion count or stream length reaches the threshold, the stream |
| 208 | +shall be promoted to shared stream pool. |
| 209 | + |
| 210 | +-------------------------------------------------------------------------------- |
| 211 | +-------------------------------------------------------------------------------- |
| 212 | +title: Sequential cutoff policy **always** |
| 213 | +id: policy_always |
| 214 | +--- |
| 215 | + |
| 216 | +When sequential cutoff policy is set to **always**, the sequential cutoff shall |
| 217 | +be enabled regardless to cache occupancy. |
| 218 | + |
| 219 | +-------------------------------------------------------------------------------- |
| 220 | +-------------------------------------------------------------------------------- |
| 221 | +title: Sequential cutoff policy **full** |
| 222 | +id: policy_full |
| 223 | +--- |
| 224 | + |
| 225 | +When sequential cutoff policy is set to **full**, the sequential cutoff shall |
| 226 | +be enabled only when cache occupancy reaches 100%. |
| 227 | + |
| 228 | +-------------------------------------------------------------------------------- |
| 229 | +-------------------------------------------------------------------------------- |
| 230 | +title: Sequential cutoff policy **never** |
| 231 | +id: policy_never |
| 232 | +--- |
| 233 | + |
| 234 | +When sequential cutoff policy is set to **never**, the sequential cutoff shall |
| 235 | +be disabled. |
0 commit comments