deeraj.patil@ibm.com has uploaded this change for review.

View Change

QOS Implementation.

1. IO bandwidth control (Data, Bytes Per Second).
2. IOPS (IO Operation Per Second).
2. Quota (N/W data Limit over a larger time).

Bandwidth Control:
Two types of approaches are there for bandwidth control: SYNC and ASYNC.
Sync Control : Per-Share, Per-Client. (macro in code currently disabled)
ASYNC Control : Per-Share, Per-Client, PerShare-PerClient Combined.
Default ASYNC macro is enabled in code (!BW_SYNC_ENABLE).
Default ASYNC type is PerShare-PerClient.

IOPS Control:
Only ASYNC IOPS Control is supported.
Can be enabled at : Per-Share, Per-Client, PerShare-PerClient.
Default type is PerShare-PerClient(Combined Only).

Quota Control:
i.e (Network Data Consumtion limit over a period of larger time).
Per-Share level, Per-Client level, or can PerShare-PerClient level.
Default : Quota is currently disabled.

Can indvidually enable BW control, IOPS Control, Quota.
Limit values for Bandwidth and Quota can be controlled indvidually for
Write and Read or can be combined together.
For IOPS only Combined accounting supported (can be extended in future).

For enabling QOS, enable_qos params should be true in global config.
Default value for enable_qos in global config is false.

For Controlling ratelimiting values dynamically :
1.DBUS interface (Currently only for BW control).
2.Dynamic config update at export level(Using SIGHUP).

QOS CompileTime enable and disablement,
using ENABLE_QOS flag while doing CMAKE.

Implemented by naresh.chillarege@ibm.com and deeraj.patil@ibm.com

Change-Id: I36f064ef91ba3ba2ef6fd0fcb3d490a8ff114757
Signed-off-by: Deeraj.Patil <Deeraj.Patil@ibm.com>
---
M src/CMakeLists.txt
M src/MainNFSD/CMakeLists.txt
M src/MainNFSD/nfs_init.c
A src/MainNFSD/nfs_qos.c
M src/Protocols/NFS/nfs4_Compound.c
M src/Protocols/NFS/nfs4_op_destroy_session.c
M src/Protocols/NFS/nfs4_op_read.c
M src/Protocols/NFS/nfs4_op_write.c
M src/include/client_mgr.h
M src/include/config-h.in.cmake
M src/include/export_mgr.h
M src/include/log_common.h
M src/include/nfs_proto_data.h
A src/include/nfs_qos.h
A src/include/nfs_qosmgr.h
M src/log/log_functions.c
M src/support/client_mgr.c
M src/support/exports.c
A src/support/nfs_qosmgr.c
M src/support/nfs_read_conf.c
20 files changed, 5,417 insertions(+), 9 deletions(-)

git pull ssh://review.gerrithub.io:29418/ffilz/nfs-ganesha refs/changes/96/1209096/1

To view, visit change 1209096. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-MessageType: newchange
Gerrit-Project: ffilz/nfs-ganesha
Gerrit-Branch: next
Gerrit-Change-Id: I36f064ef91ba3ba2ef6fd0fcb3d490a8ff114757
Gerrit-Change-Number: 1209096
Gerrit-PatchSet: 1
Gerrit-Owner: deeraj.patil@ibm.com