GANESHA-QOS-CONFIG(8)

πŸ“¦
version 9.16 Β· 4 versions
, in fedora 44

πŸ’– NAME πŸ’–

ganesha-qos-config β€” the NFS-Ganesha Quality of Service Configurations file ✨ (yes bestie, it's a section 8 man page, we're in the system-administration girlies now πŸ’…)


πŸ“œ SYNOPSIS πŸ“œ

/etc/ganesha/ganesha.conf

✨ DESCRIPTION ✨

okay so. The nfs_qos module is literally part of the NFS-Ganesha server, and her whole job is making sure I/O resources get distributed fairly when things get busy 🫢. She does it with rate limiting techniques β€” bandwidth capping, IOPS (Input/Output Operations Per Second) management, and Token consumption. Obsessed.

The nfs_qos module lives in the source file nfs_qos.c 🧚. She's designed to manage quality of service for NFS operations by controlling how many operations get executed over a specified interval. Basically she balances "we want performance" against "please do not let the server get absolutely cooked by excessive or bursty I/O operations" 😭.

Here's how the module works, fr fr:

  • Bandwidth and IOPS Limiting: she monitors and regulates the amount of data transferred (bandwidth) and the number of ops executed (IOPS) πŸ‘‘. And based on the configured limit's, she calculates the time required for the IO, and deffers the IO.
  • Token-Based Control: every I/O operation needs tokens to be processed πŸŽ€. Tokens get replenished periodically. If an incoming request doesn't have enough tokens available, the IO will be retired slowly to the client with NFS_ERROR_DELAY πŸ’€.
  • You can individually enable BandWidth, IOPS and Token controlling. Mix and match, main character energy ✨.

When you're deciding which QoS type to enable, here's the vibe check 🌈:

  • If simplicity and lower system overhead are the factors and the workload is fairly uniform, Per_Export might suffice. However β€” be aware that this can lead to client starvation 😭.
  • If your priority is making sure a client's queued I/Os don't indefinitely delay new requests from that same client, Per_Client may help, although it does not globally balance load across different exports.
  • If fairness at both the export and client level is paramount, and you can accommodate the additional complexity and resource usage, then Per_Export_Per_Client is the most balanced strategy πŸ‘‘.

🌈 OPTIONS 🌈

The behavior of nfs_qos can be influenced by various configuration parameters, typically set in the server's main configuration file (for example, /etc/ganesha/ganesha.conf). Some configurable options include πŸ’…:

  • Maximum bandwidth: set upper bounds on data transfer rates.
  • Maximun IOPS limits: set upper bounds for the number of operations executed per seconds.
  • Token thresholds and refresh intervals: define how many tokens available per time unit (usally 30 minutes, hourly, daily), which controls the rate of allowed data consuption over the specified time.

πŸŽ€ QOS_DEFAULT_CONFIG {} πŸŽ€

The global defaults block, bestie. Every single knob, no skips, periodt πŸ’–

  • enable_qos β€” bool, default false β€” she's off by default, so flip her on first 🌸
  • enable_tokens β€” bool, default false
  • enable_bw_control β€” bool, default false
  • enable_iops_control β€” bool, default false
  • enable_ds_control β€” bool, default false
  • combined_rw_bw_control β€” bool, default false
  • combined_rw_token_control β€” bool, default true ✨
  • combined_rw_iops_control β€” bool, default true ✨
  • qos_type β€” enum, values ["Per_Export", "Per_Client", "Per_Export_Per_Client"], default "Per_Export_Per_Client" πŸ‘‘
  • max_export_combined_bw β€” uint64, range 32768 to 107374182400, default 2147483648
  • max_client_combined_bw β€” uint64, range 32768 to 107374182400, default 2147483648
  • max_export_write_bw β€” uint64, range 32768 to 107374182400, default 2147483648
  • max_export_read_bw β€” uint64, range 32768 to 107374182400, default 2147483648
  • max_client_write_bw β€” uint64, range 32768 to 107374182400, default 2147483648
  • max_client_read_bw β€” uint64, range 32768 to 107374182400, default 2147483648
  • max_export_iops β€” uint64, range 8 to 1638400, default 8192
  • max_client_iops β€” uint64, range 8 to 1638400, default 8192
  • max_export_write_iops β€” uint64, range 8 to 1638400, default 8192
  • max_export_read_iops β€” uint64, range 8 to 1638400, default 8192
  • max_client_write_iops β€” uint64, range 8 to 1638400, default 8192
  • max_client_read_iops β€” uint64, range 8 to 1638400, default 8192
  • max_export_write_tokens β€” uint64, range 3774873600 to UINT64_MAX, default 90596966400
  • max_export_read_tokens β€” uint64, range 3774873600 to UINT64_MAX, default 90596966400
  • max_client_write_tokens β€” uint64, range 3774873600 to UINT64_MAX, default 90596966400
  • max_client_read_tokens β€” uint64, range 3774873600 to UINT64_MAX, default 90596966400
  • export_write_tokens_renew_time β€” uint64, range 3600 to UINT64_MAX, default 86400
  • export_read_tokens_renew_time β€” uint64, range 3600 to UINT64_MAX, default 86400
  • client_write_tokens_renew_time β€” uint64, range 3600 to UINT64_MAX, default 86400
  • client_read_tokens_renew_time β€” uint64, range 3600 to UINT64_MAX, default 86400

πŸ¦‹ EXPORT { QOS_BLOCK {} } πŸ¦‹

See global QOS_DEFAULT_CONFIG {} β€” same energy, different scope πŸ’œ

  • Config exception is qos_type is not available at export level πŸ™ˆ
  • By default global EXPORT_DEFAULTS will be applied to export.
  • This block is required at export level only if there needs to be different value than global value.
  • Respective QOS_DEFAULT_CONFIG enable values needs to be enabled first to enable export level values.
  • If export QOS_BLOCK {} needs to be populated, then populate required enabled entities otherwise default value will get applied.
  • How range and default values derived can be found in src/include/nfs_qos.h 🧚

🌸 PSEUDOFS { QOS_BLOCK {} } 🌸

See EXPORT { QOS_BLOCK {} } β€” literally the same, bestie, go read that one ⭐


πŸ“ NOTES:

The nfs_qos module is essential for maintaining a balanced and fair I/O workload on the NFS server πŸ‘‘. By regulating operations with tokens, bandwidth, and IOPS constraints, she protects the server from overload while ensuring that client requests are handled in a controlled manner. This man page provides an overview of her function and operation within the greater context of the NFS server's architecture 🫢


πŸ‘‘ AUTHOR

The NFS-Ganesha-QOS feature was added by <Deeraj.Patil@ibm.com>, <Naresh.Chillarege@ibm.com> β€” legends, honestly πŸ’…


πŸ’« SEE ALSO

ganesha-config <>(8) 🌈


and that's the whole page, bestie!! this one came from NFS-Ganesha, dated Aug 11, 2026 β€” go forth and rate-limit responsibly, you absolute icon πŸ’–βœ¨πŸŽ€

πŸ“¦ where this page comes from