Running Alice with the number of people that we do has become more difficult with increasing Minecraft versions due to increasing CPU usage and the greater prevalence of memory leaks ("bad code"). While we're waiting to upgrade to a better Intel Haswell CPU, the timeline on that is currently uncertain. In the meantime, and because ultimately Minecraft is only capable of using one CPU at one time, we're going to consider splitting Alice into two separate but connected servers. This would allow us to use other CPUs and other systems and "split the load," giving everyone a performance boost and reducing lag. As the plan goes, Player inventory and details would be shared between servers. You would still be able to perform trades with other Alice players on other servers. Chat and player list would appear as if you were on the same server (similar to how our James and Vincent servers were run years ago). Worlds would be exact mirrors of each other, as far as the seed goes. You would be allowed to transfer chunks between servers (occasionally) so you could switch servers as conditions changed. Certain players would be shuffled to other servers in order to balance out the load. Ender chests and other cross-world items would not work across servers, but we could add a "cross-server chest" in the future. You'd be allowed to build in other servers, such as to place a portal that sends users to the right server for your home. Right now, we haven't implemented this, but we're deeply considering it.
Sounds like a great idea. Not everyone has issues running it, but several people do. I think this will help a lot.
I don't know how I feel about this. The unification of the server is kind of important. I believe we are just adding a second level of complexity. Instead of 2 CPUs, what if we go to a hex-core Xeon or 8-core Xeon? I have built servers in the past (mostly as render slaves) and I find that it is more efficient and cost-effective to use a single 8-core processor than 2 quads. Though the dual-quad setup allows for better share of load, it also slows down because of the need to divide and share load and information. Though the distance between the processors is very small, when multiplied exponentially by the massive amount of instructions being sent, the difference becomes clear. In my opinion, These are the best possible solutions: Intel Xeon E5-2687W 8-Core 16-Thread 20.0 MB Cache 3.10 GHz (Base) 3.80 GHz (Turbo) 750 GB RAM (Max) 4-Channel Memory IntelĀ® Demand Based Switching Intel Xeon X5690 6-Core 12-Thread 12.0 MB Cache 3.46 GHz (Base) 3.73 GHz (Turbo) 288 GB RAM (Max) 3-Channel Memory IntelĀ® Demand Based Switching (And if we can come up with $5,000.00) Intel Xeon E7-8870 10-Core 20-Thread 30.0 MB Cache 2.40 GHz (Base) 2.80 GHz (Turbo) 4096 GB RAM (Max) 4-Channel Memory COMPLETELY INSANE POWER
You're missing the point. We are getting a new server/servers. This is for the time being. "While we're waiting to upgrade to a better Intel Haswell CPU, the timeline on that is currently uncertain. In the meantime, and because ultimately Minecraft is only capable of using one CPU at one time, we're going to consider splitting Alice into two separate but connected servers."
so if the seed is the same would it not be posible to keep the worlds interlocked so as all land claims and buildings are the same and just converge the two worlds every so often? basicaly so that say half the map runs on one server while the other half runs on the other server so it splits the load then if players cross the line they move to the other server (just an idea idk if it would work)
Personally, I'd prefer to source the issue properly and fix that, rather than making yet more work for you, sk and your team? I'd help if I could program in java :3
Would just abstracting the extra dimensions to another server be sufficient? Consider that having the nether, end, and mining world on another server and keep 'world' on Alice would free up the resources consumed by those dimensions being constantly loaded along with the main one. If that's done (and it's sufficient) then you wouldn't necessarily have to deal with moving player claim/chunks or mirroring the seed.
Why not just disable some of the buggier cpu hoarding and memory leaking mods? Or would this not make sufficient difference? I also like the idea of moving the end/nether/mining world to another server so overworld doesn't need to be split between servers...
Most of the load occurs on the main world and so that's what really needs to be split. We don't know what is leaking memory at the moment, but the memory leak is only half of the problem.
With all the main world load I just read about the only solution that comes to mind is running some of alice on a virtualbox machine that is running windows 8. And that DEFINETLY has a 0 percent chance of workin if I am correct.
Why run it on an abstraction layer that just adds more load? And why try using a client (not server) version of Windows? And Windows EIGHT? And WINDOWS?
This shows me that you have NO IDEA of the difference between server and client systems. Windows is not the best choice for running high-uptime servers. Windows 8 is basically two OS's mashed together. The complexity of that lowers performance. Minecraft basically uses one core for all rendering queuing and game logic, so the # of cores doesn't matter much. A virtual box is not as good as a dedicated server (as we are using right now IIRC). Other users may be using it without your knowledge. Most functions are routed through a third-party function. Some virtual machines may not be made/implemented properly. What we have right now it leagues better than your suggestion. All of this is coming from a self-qualified technology master. And how does you being correct imply that the solution would not work? Being correct in a system's architecture would mean that it would work properly, correct?
Modesty at its best And also, couldn't we actually just have 2 worlds which are both on separate servers? So we don't need to go through all the world sync things and people could choose which world to build on? We could split our current world diagonally with one half being one server and the other half being another, regenerate the missing parts and then allow people to do a command to switch worlds? BTW in my example spawn gets split in half and I'm too tired to think of a fix for that... Oh and you don't have to split the worlds, we could just make a new world and ask some people to move their chunks over there...
Building upon this, to facilitate trade, we could just have a "trade" world hosted on one of the servers (maybe the bazaar on the other for load balance). Because the minimum cost to trade by teleport is 2 pearls right now, there could just be a cost to enter or exit the world, but not both.