Derek Dong
Research Software Engineer
iRODS Consortium
June 29 - July 2, 2026
iRODS User Group Meeting 2026
Barcelona, Spain
Absorbing Logical Quotas
into the iRODS Server
Overview
What is a logical quota?
It's a quota for a logical path.
Can limit bytes or data objects on logical paths.
e.g. /tempZone/home/alice can have at most 10,000 bytes and 3 data objects.
Isn't there already a plugin?
Yes, there is a rule engine plugin.
This new system aims to fill a different space and has some notable differences.
Most notable change: this is a passive system, similar to physical quotas.
Advantages compared to plugin
Timing Tests
$a environment variable is just the innermost collectionTiming Tests: Logical Quotas Plugin
$ time bash setup_logical_quotas_plugin.sh
real 3m7.483s
user 0m16.011s
sys 0m4.763s
$ time iput testfile1 $a/testfile1
real 0m39.538s
user 0m0.056s
sys 0m0.017s
$ time iput testfile1 $a/testfile2
real 0m39.780s
user 0m0.062s
sys 0m0.017s
$ time iput testfile1 $a/testfile3
remote addresses: 172.19.0.3 ERROR: putUtil: put error for /tempZone/home/rods/0/1/2/3/4/5/6/7/8/9/10/11/12/13/14/15/16/17/18/19/20/21/22/23/24/25/26/27/28/29/30/31/32/33/34/35/36/37/38/39/40/41/42/43/44/45/46/47/48/49/50/51/52/53/54/55/56/57/58/59/60/61/62/63/64/65/66/67/68/69/70/71/72/73/74/75/76/77/78/79/80/81/82/83/84/85/86/87/88/89/90/91/92/93/94/95/96/97/98/99/100/testfile3, status = -169000 status = -169000 SYS_NOT_ALLOWED
Level 0: Logical Quotas Policy Violation: Adding object exceeds maximum data size in bytes limit
real 0m1.570s
user 0m0.060s
sys 0m0.019s
Timing Tests: Built-in Logical Quotas
| command | duration |
|---|---|
bash setup_builtin_logical_quotas.sh | 51.561s |
iput testfile1 $a/testfile1 | 1.853s |
iadmin calculate_logical_usage | 0.235s |
iput testfile1 $a/testfile2 | 1.875s |
iadmin calculate_logical_usage | 0.246s |
iput testfile1 $a/testfile3 | 1.848s |
iadmin calculate_logical_usage | 0.230s |
About 20x faster...
$ time iput testfile1 $a/testfile4
remote addresses: 172.19.0.3 ERROR: putUtil: put error for /tempZone/home/rods/0/1/2/3/4/5/6/7/8/9/10/11/12/13/14/15/16/17/18/19/20/21/22/23/24/25/26/27/28/29/30/31/32/33/34/35/36/37/38/39/40/41/42/43/44/45/46/47/48/49/50/51/52/53/54/55/56/57/58/59/60/61/62/63/64/65/66/67/68/69/70/71/72/73/74/75/76/77/78/79/80/81/82/83/84/85/86/87/88/89/90/91/92/93/94/95/96/97/98/99/100/testfile4, status = -186000 status = -186000 LOGICAL_QUOTA_EXCEEDED
real 0m1.022s
user 0m0.057s
sys 0m0.018s
Timing Tests: Built-in Logical Quotas
More testing shows roughly linear performance for recalculating totals.
Time to recalculate 1 million data objects: ~2s
Time to recalculate 11.3 million data objects: ~27s
Other Timing Tests: Built-in Logical Quotas
Built-in system vs. plugin
How does it all work?
The built-in system has 3 main operations:
Set and recalculate also have microservices available to admin rules.
Enforcement
$ iadmin set_grid_configuration logical_quotas enabled 1
Demo!
Future
Please use the new system. We want to know pain points.
Thank you!
Questions?