MCPcopy Create free account
hub / github.com/F-Stack/f-stack / arc_tuning_update

Function arc_tuning_update

freebsd/contrib/openzfs/module/zfs/arc.c:7350–7445  ·  view source on GitHub ↗

* Called during module initialization and periodically thereafter to * apply reasonable changes to the exposed performance tunings. Can also be * called explicitly by param_set_arc_*() functions when ARC tunables are * updated manually. Non-zero zfs_* values which differ from the currently set * values will be applied. */

Source from the content-addressed store, hash-verified

7348 * values will be applied.
7349 */
7350void
7351arc_tuning_update(boolean_t verbose)
7352{
7353 uint64_t allmem = arc_all_memory();
7354 unsigned long limit;
7355
7356 /* Valid range: 32M - <arc_c_max> */
7357 if ((zfs_arc_min) && (zfs_arc_min != arc_c_min) &&
7358 (zfs_arc_min >= 2ULL << SPA_MAXBLOCKSHIFT) &&
7359 (zfs_arc_min <= arc_c_max)) {
7360 arc_c_min = zfs_arc_min;
7361 arc_c = MAX(arc_c, arc_c_min);
7362 }
7363 WARN_IF_TUNING_IGNORED(zfs_arc_min, arc_c_min, verbose);
7364
7365 /* Valid range: 64M - <all physical memory> */
7366 if ((zfs_arc_max) && (zfs_arc_max != arc_c_max) &&
7367 (zfs_arc_max >= 64 << 20) && (zfs_arc_max < allmem) &&
7368 (zfs_arc_max > arc_c_min)) {
7369 arc_c_max = zfs_arc_max;
7370 arc_c = MIN(arc_c, arc_c_max);
7371 arc_p = (arc_c >> 1);
7372 if (arc_meta_limit > arc_c_max)
7373 arc_meta_limit = arc_c_max;
7374 if (arc_dnode_size_limit > arc_meta_limit)
7375 arc_dnode_size_limit = arc_meta_limit;
7376 }
7377 WARN_IF_TUNING_IGNORED(zfs_arc_max, arc_c_max, verbose);
7378
7379 /* Valid range: 16M - <arc_c_max> */
7380 if ((zfs_arc_meta_min) && (zfs_arc_meta_min != arc_meta_min) &&
7381 (zfs_arc_meta_min >= 1ULL << SPA_MAXBLOCKSHIFT) &&
7382 (zfs_arc_meta_min <= arc_c_max)) {
7383 arc_meta_min = zfs_arc_meta_min;
7384 if (arc_meta_limit < arc_meta_min)
7385 arc_meta_limit = arc_meta_min;
7386 if (arc_dnode_size_limit < arc_meta_min)
7387 arc_dnode_size_limit = arc_meta_min;
7388 }
7389 WARN_IF_TUNING_IGNORED(zfs_arc_meta_min, arc_meta_min, verbose);
7390
7391 /* Valid range: <arc_meta_min> - <arc_c_max> */
7392 limit = zfs_arc_meta_limit ? zfs_arc_meta_limit :
7393 MIN(zfs_arc_meta_limit_percent, 100) * arc_c_max / 100;
7394 if ((limit != arc_meta_limit) &&
7395 (limit >= arc_meta_min) &&
7396 (limit <= arc_c_max))
7397 arc_meta_limit = limit;
7398 WARN_IF_TUNING_IGNORED(zfs_arc_meta_limit, arc_meta_limit, verbose);
7399
7400 /* Valid range: <arc_meta_min> - <arc_meta_limit> */
7401 limit = zfs_arc_dnode_limit ? zfs_arc_dnode_limit :
7402 MIN(zfs_arc_dnode_limit_percent, 100) * arc_meta_limit / 100;
7403 if ((limit != arc_dnode_size_limit) &&
7404 (limit >= arc_meta_min) &&
7405 (limit <= arc_meta_limit))
7406 arc_dnode_size_limit = limit;
7407 WARN_IF_TUNING_IGNORED(zfs_arc_dnode_limit, arc_dnode_size_limit,

Callers 5

param_set_arc_longFunction · 0.85
param_set_arc_intFunction · 0.85
param_set_arc_longFunction · 0.85
param_set_arc_intFunction · 0.85
arc_initFunction · 0.85

Calls 1

arc_all_memoryFunction · 0.50

Tested by

no test coverage detected