Mitigating performance issues

Discussion in 'Announcements' started by sk89q, 23 August 2013.

Tags:
  1. sk89q

    sk89q Administrator
    Staff Member

    Joined:
    1 December 2011
    Messages:
    2.490
    Likes Received:
    1.504
    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.
     
  2. Aelyndra

    Aelyndra New Member

    Joined:
    6 May 2013
    Messages:
    6
    Likes Received:
    3
    Sounds like a great idea. Not everyone has issues running it, but several people do. I think this will help a lot.
     
  3. TheMammoth

    TheMammoth New Member

    Joined:
    5 April 2013
    Messages:
    18
    Likes Received:
    4
    So it's going to be like a bungeecordnetwork ?
     
  4. bda603brad

    bda603brad New Member

    Joined:
    26 February 2013
    Messages:
    2
    Likes Received:
    1
    Love the idea now I can go back to being able to play without crashing.
     
    Raevox likes this.
  5. Jadedwolf

    Jadedwolf Will Strip for lapis

    Joined:
    1 December 2011
    Messages:
    22
    Likes Received:
    13
    Essentially yes, but in SK's own unique way.
     
    TheMammoth likes this.
  6. shields42

    shields42 Systems Architect

    Joined:
    14 January 2013
    Messages:
    67
    Likes Received:
    20
    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
    Intel Xeon X5690
    (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
     
  7. Jadedwolf

    Jadedwolf Will Strip for lapis

    Joined:
    1 December 2011
    Messages:
    22
    Likes Received:
    13
    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."
     
  8. sk89q

    sk89q Administrator
    Staff Member

    Joined:
    1 December 2011
    Messages:
    2.490
    Likes Received:
    1.504
    Besides that, the $5,000 processor that you mentioned would run Alice at hilariously slow speeds.
     
  9. callum

    callum anouk8

    Joined:
    13 June 2012
    Messages:
    42
    Likes Received:
    4
    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)
     
  10. sk89q

    sk89q Administrator
    Staff Member

    Joined:
    1 December 2011
    Messages:
    2.490
    Likes Received:
    1.504
    That could allow easy item duping unfortunately.
     
  11. Toma678

    Toma678 Member

    Joined:
    14 April 2013
    Messages:
    135
    Likes Received:
    17
    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
     
  12. Circuitbomb

    Circuitbomb His name was Robert Paulson

    Joined:
    17 February 2013
    Messages:
    14
    Likes Received:
    2
    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.
     
    Benjobean99 likes this.
  13. diskiller

    diskiller New Member

    Joined:
    12 July 2013
    Messages:
    6
    Likes Received:
    0
    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...
     
  14. sk89q

    sk89q Administrator
    Staff Member

    Joined:
    1 December 2011
    Messages:
    2.490
    Likes Received:
    1.504
    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.
     
  15. TitanfallInbound

    TitanfallInbound Dude who knows a lot about mods.

    Joined:
    24 July 2013
    Messages:
    107
    Likes Received:
    3
    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.
     
  16. hsun324

    hsun324 Programmer, Gamer

    Joined:
    14 May 2012
    Messages:
    362
    Likes Received:
    90
    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?
     
    Neonbeta likes this.
  17. TitanfallInbound

    TitanfallInbound Dude who knows a lot about mods.

    Joined:
    24 July 2013
    Messages:
    107
    Likes Received:
    3
    I play skcraft on a triple core PC running WINDOWS 8.
     
  18. hsun324

    hsun324 Programmer, Gamer

    Joined:
    14 May 2012
    Messages:
    362
    Likes Received:
    90
    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).
      1. Other users may be using it without your knowledge.
      2. Most functions are routed through a third-party function.
      3. 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?
     
  19. freddy362

    freddy362 Longstanding noob

    Joined:
    2 July 2012
    Messages:
    101
    Likes Received:
    11
    Modesty at its best :p

    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...
     
  20. hsun324

    hsun324 Programmer, Gamer

    Joined:
    14 May 2012
    Messages:
    362
    Likes Received:
    90
    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.