Is it possible to set vm memory size for less than 256 MB?

I’ve an app with a very low memory footprint. Is it possible to have VMs with 64MB or 32MB memory footprint?
Is that something on the roadmap?
Would that change the pricing of the VM (if this was possible)?

3 Likes

… IPv6-only 64M VMs with a swap of 256M would do nicely for applications (test envs) that wouldn’t mind swaps & IPv6, provided it retails for, say, $1/mo or less, to make it worth the perf hit :wink:

+1 for this. I also have an application which can be deployed on 64 mb vm (even without swap) and would like a 64 mb vm at reduced price ($0.5)

The fly.io free allowances allow you to run 3 containers with 256mb memory for no charge.

I think we’ll end up doing smaller instances, but it won’t be quick. This is for two reasons:

  1. We deal with an awful lot of OOM related support issues. OOMs really make us look bad, they’re a nasty experience that’s hard to really handle well in a UX.
  2. Swap is not without cost. VMs that swap are exchanging RAM for iops. I would be very wary of advertising memory constrained VMs with swap.

We have some ideas, though, we can scale memory up and down dynamically. We’ve thought about billing based on actual RAM usage. It appeals to me, it would just be very complicated to explain. And if you’ve seen us on the internet, our pricing is already too complicated.

6 Likes

I think that is fair.
There are far fewer workloads today that can have that have such a memory footprint.
I didn’t even take swap into account - trading iops for memory is generally best avoided, especially in over-subscribed environments.

Thanks for your answer!

For me, my use case is research; spinning up several incredibly tiny VM’s to test out how a p2p mesh network handles network interruptions/delays/etc. 256MB is too much RAM per node (rust ftw), and it would be better for two reasons if I could go lower: I could run more for the same price (think 24 nodes w/ 32MB ram, rather than 3 w/ 256MB), and I could see what would cause an OOM (purposefully, ie, no swap).

The edge capabilities of fly.io match my needs (I need to test across geographic regions, and I don’t want to manually deploy each one) but for my case an OOM is much preferable because then I’ll know that I need to handle memory better. It’s a testing environment, not production. Just another perspective on a use case for ultra-small VM’s. If there’s an easier way to do this I’m open to suggestions :slight_smile:

1 Like

I wouldn’t want to ever be using swap but I’d be interested in this for running tiny Rust or Go workloads where I’m typically using < 5MB of RAM.

Very understandable! Appearances are everything.

The best I can think of is a “Yes, I’m really sure I know what I’m doing!” button, but I suspect that probably wouldn’t work for helping with your support issue.

1 Like