[LU-12358] Cache isolation via User/Group/Project quota on the PCC backend fs Created: 29/May/19  Updated: 25/Jan/23

Status: Open
Project: Lustre
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Improvement Priority: Minor
Reporter: Qian Yingjin Assignee: Qian Yingjin
Resolution: Unresolved Votes: 0
Labels: None

Issue Links:
Blocker
Duplicate
is duplicated by LU-12356 Cache isolation via User/Group/Projec... Resolved
Related
Rank (Obsolete): 9223372036854775807

 Description   

We can also enforce a quota limitation of the capacity usage for each user, group, or project to provide cache isolation. An administrator can specify the quota enforcement on the local LPCC file system.

Thus, users can perform PCC-cached I/O on these files until they receive a return value -ENOSPC or -EDQUOT, which means that they hit the quota limit or that there is no free capacity left on the local PCC backend fs. At this time, I/O will fall back to the normal I/O path.

With this feature, it can have multiple PCC backends on a single client with different caching rules, so we can define upfront how much of the client FS can be used for each cache.
 



 Comments   
Comment by Li Xi [ 04/Jun/19 ]

I think there needs to be a mechanism for a global PCC quota management. I am wondering whether we can implement some thing like following:

1) Under /.lustre directory, we create a quota file /.lustre/pcc_quota.

2) /.lustre/pcc_quota records the default soft/hard limitations of space/inode usage for each user/group/project for each PCC storage.

3) The limitation could be relative numbers not absolute nubmer, meaning, if the PCC storage is bigger, the actual limitation is higher. That means, the limitation for a user could be (e.g.) 30% of the PCC space.

4) When a PCC device is added into Lustre client, the file /.lustre/pcc_quota will be readed automatically by PCC codes, and the quota setting of the local file system will be calculated based on the configuration of /.lustre/pcc_quota as well as the capacity of the PCC device. When the PCC is being added to PCC, the quota setting will be configured automatically to the PCC file system.

5) We could add complex quota configuration in /.lustre/pcc_quota too, in order to assign a specific quota configuration to a special PCC device or to a special Lustre client, because for example the PCC device is significantly larger than the normal PCC devices. But assuming all PCC devices have similar specifications, this might be an extension and not necessarily implmented in the first version.

6) By enforcing a global percentage limitation to all PCC stoages, we can enforce an entire space/inode usage control on all PCC storage in the whole cluster.

This is not actually an "global" control though, which means even a user doesn't use any space on one PCC storage, the user still can't exceed its local limitations on other PCC storages. A mechanism which enable global quota control would be even better, but I feel that kind of mechanism would be complex and won't be robust enough to address the problems of actively adding/deleting PCC storages.

Comment by Gerrit Updater [ 06/Sep/20 ]

Yingjin Qian (qian@ddn.com) uploaded a new patch: https://review.whamcloud.com/39831
Subject: LU-12358 pcc: add project quota support on PCC backend
Project: fs/lustre-release
Branch: master
Current Patch Set: 1
Commit: fe84e96402bfcdfda27a8e70b5e217df2d73d5f5

Generated at Sat Feb 10 02:51:53 UTC 2024 using Jira 9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c.