I wonder if they would need this if they used a single ruby process with many threads (instead of many ruby processes).
Their problems are mainly a result of needing to access 80 megabytes of slowly changing translation data. Since they run many ruby processes and have memory growth issues, this translation data was taking a while to load.
If they had a single stable ruby process running on each box, possibly they wouldn't have had these issues.
Yeah, all the time I had a little devil on my shoulder shouting "my jvm laughs at your mri". Thats said, I like the approach to use what the OS offers - essentially atomic file system constructs and the cache. When you control your platform, things can go faster by cutting away those abstraction layers.
Comments
I wonder if they would need this if they used a single ruby process with many threads (instead of many ruby processes).
Their problems are mainly a result of needing to access 80 megabytes of slowly changing translation data. Since they run many ruby processes and have memory growth issues, this translation data was taking a while to load.
If they had a single stable ruby process running on each box, possibly they wouldn't have had these issues.
Yeah, all the time I had a little devil on my shoulder shouting "my jvm laughs at your mri". Thats said, I like the approach to use what the OS offers - essentially atomic file system constructs and the cache. When you control your platform, things can go faster by cutting away those abstraction layers.