Hi,
I, like probably many others, signed up for a Linode to run my personal e-mail and web hosting.
My email is using UW imap and I have split my email into two folders (one saved items, one sent items) per year, using the MBX format (like MBOX only with a few features such as a binary header, flags writes without message rewrites, and message lengths to enable efficient mailbox scanning) and dmail for direct MBX delivery (avoid overhead on initial mailbox opens).
For me this is roughly 200MB to 500MB per folder. Now, this is a problem with the current IO tokens, as if I delete a message from early in a folder it runs out of IO tokens during the mailbox close. If I delete messages in multiple mailboxes during one session, well, things get very bad. I'm considering a switch to dovecot(1.0rc5) + maildir to avoid the heavy IO on deletes (hence enabling ext3 directory indexes, as per my other post -- to then avoid heavy IO on some other operations), but for now, I'm also wondering if there's any chance of improvements to the IO token limits or system.
Now I've only recently signed up to Linode, and I see that the plans have improved greatly (especially in memory and disk) over time.
However, I don't see any reference to the IO tokens having been increased.
I have really 3 questions (the one in the topic, and two others);
1. Is there a chance of an increase for all users, as the hardware speed is likely to have increased?
2. How about increasing tokens for users on higher plans, as there is less contention and yet still the same system IO? As I understand it, even on a Linode 200, with a lower contention ratio, I'm still receiving as many IO tokens as I would if I'd signed up for a Linode 100.
3. How about making 'unused' IO tokens available to other users? I have implemented resource sharing (for bandwidth) in other environments via a linear increase + exponential decay algorithm, which I've found to work quite well (and believe generally permits more efficient sharing of resources, fairness between those contending for the resources and better aggregate throughput). Basically:
Code:
decay_factor = decay_percentage / 100.0
new_balance[user] = old_balance[user] * (1.0 - decay_factor) +
sum(old_balance) * decay_factor / user_count +
alloc_capacity_per_interval / user_count
edit: Formula was initially wrong.