These forums have been archived and are now read-only.

The new forums are live and can be found at https://forums.eveonline.com/

Player Features and Ideas Discussion

 
  • Topic is locked indefinitely.
 

[Suggestion] Breaking the limits of users per system (larger battles)

Author
Ogir Tenno
Marvel-Yukon
#1 - 2014-05-27 08:57:53 UTC
B-R5RB topped out at 2,670 players active at the same time and the time dilation was horrible.

And players are still wanting larger fleet fights (or at least less time dilated). Also, the increasing number of drones leads to heavier server load.

The following solution is on my mind for a few months already, and I finally decided to share the thought with you.

Unfortunately, there are no deeper insides into the EVE cluster, so some things might be speculative, so correct me if I am wrong.


Cry Current situation:

Currently each server handles one or more solarsystems, depending on the numbers of players in the system.

When a pilot traverses from one system to another, his current session data gets serialized and transfered to the new server.

This consumes time.

Also, the server handles and calculates the LOS for each ship (i.e. the grid), and also the data for that ship.

It also calculates damage and repair systems.

This causes heavy load on the server, multiplied by the use of drones, because those must be calculated as additional ships.


Idea My Suggestion:

Move the handling of ships to dedicated servers!

This way, each system node could concentrate on other data, and only inform the other ship servers about a new ship in their space.

Calculations of the grid could be done by each node seperately, but also here, the nodes could exchange related data. Also damage and repairs would be easier handled by each node sending an information to the targeted ship node.

Drones could easily be handled by those nodes as well.

Also, the serialization of sessions would fall flat, because the only thing a system node needs to know is what ship ID entered the system, and broadcast it to all the other ship IDs in that system.


Also, from a monetary point of view, this could be a step forward for CCP, because this would greatly reduce the costs of new servers. Instead of spending several thousand dollars for a new and more powerful system-node, you could just plugin lets say a Raspberry PI for each new account, or more powerful servers and use it for more ships at once ( or use them for handling carriers and their drones).


As I said before, there is not enough information about the details of the EVE cluster to make more deep suggestions. Also, this would probably mean a major revamp of the server software (even though this might be easier than it seems).

Hope you like the idea, and maybe a dev could take a look into it.
Xeross155
Sebiestor Tribe
Minmatar Republic
#2 - 2014-05-27 09:14:23 UTC
One big issue I see with this is network overhead, network can't be faster than RAM either so you'd end up saturating your network ports (And (de)serialising data also costs quite a few CPU cycles.

Focusing would be to improve multi-threaded performance and distribute over more cores (No idea how far they already are with this).
Arya Regnar
Darwins Right Hand
#3 - 2014-05-27 09:15:08 UTC
Do you even know how data handling works when multiple IDs that are related to each other are handled by several nodes?

It's not as simple as you think.

There is also the issue of user side processing all that.

EvE-Mail me if you need anything.

Ogir Tenno
Marvel-Yukon
#4 - 2014-05-27 09:16:20 UTC
Xeross155 wrote:
One big issue I see with this is network overhead, network can't be faster than RAM either so you'd end up saturating your network ports (And (de)serialising data also costs quite a few CPU cycles.


If you put the ships in own servers, you wouldn't need to deserialize them, because they don't move.

Also, you have 65k ports, lets take 60k for ships, so you could handle 60k ships/system IF you only have 1 ship/server.
Ogir Tenno
Marvel-Yukon
#5 - 2014-05-27 09:17:42 UTC
Arya Regnar wrote:
Do you even know how data handling works when multiple IDs that are related to each other are handled by several nodes?

It's not as simple as you think.

There is also the issue of user side processing all that.


It depends on how you do the setup. In how far would you consider this a problem, if all that is done is basically exchanged between the ship nodes?
Sigras
Conglomo
#6 - 2014-05-27 09:22:30 UTC
You do realize that 99.999999% of the CPU usage in a fleet battle is due to the ship calculations right? Meaning that you would still have the same problem just on a different machine.
Lucas Kell
Solitude Trading
S.N.O.T.
#7 - 2014-05-27 09:24:20 UTC
Actually, there's a wealth of information about EVE servers, and the first part of it is that it's single threaded, meaning "just move feature X to another box" isn't as straightforward as you might think.

For your specific idea, remember that ships will need to interact with each other in real time, with some things affecting multiple ships, some ships affecting multiple others, and a whole array of possible variations in-between. Essentially each of the mini servers you suggest would need to still do near on the same amount of work that a single server does now, just on top of that, they'd need to communicate with every other server and maintain a synchronised chain of events.

Beyond that, if they did choose to implement an idea like this, the first step would be rewriting the server software to be able to handle all of these components running asynchronously, which would pretty much require them to rewrite it in a manner that supports multithreading (or very close to it). If they did that, the problem would already be solved, as they could distribute the processes over multiple cores.

Essentially, if they were willing to rewrite their server software, the solution is incredibly simple. Since they aren't that's where systems like BiaB get developed to try to move the manageable parts off of the node.

The Indecisive Noob - EVE fan blog.

Wholesale Trading - The new bulk trading mailing list.

Ogir Tenno
Marvel-Yukon
#8 - 2014-05-27 09:25:11 UTC
The point is to distribute the ships on different servers (best case: 1 server / ship) and let those server handle the battle. You could even to the calculations of different grids on the system node, and leave calculations within the grid to the ship-nodes.
Lucas Kell
Solitude Trading
S.N.O.T.
#9 - 2014-05-27 09:32:54 UTC
Ogir Tenno wrote:
The point is to distribute the ships on different servers (best case: 1 server / ship) and let those server handle the battle. You could even to the calculations of different grids on the system node, and leave calculations within the grid to the ship-nodes.
But every other node would still need to know everything that node is doing in real time, since circumstances would be ever changing. Either each ship server would need to take in all of the information for every action for all other ships on grid and work out if/how it affect the ship its serving, then feed that back to the node server, or each server would have to constantly stream status updates to all other servers with all other servers taking that into account at exactly the right time so sequences of events aren't broken. It's not just a simple case of a ship ID being passed around once in a while.

The Indecisive Noob - EVE fan blog.

Wholesale Trading - The new bulk trading mailing list.

Ogir Tenno
Marvel-Yukon
#10 - 2014-05-27 09:35:45 UTC
Lucas Kell wrote:
Actually, there's a wealth of information about EVE servers, and the first part of it is that it's single threaded, meaning "just move feature X to another box" isn't as straightforward as you might think.

For your specific idea, remember that ships will need to interact with each other in real time, with some things affecting multiple ships, some ships affecting multiple others, and a whole array of possible variations in-between. Essentially each of the mini servers you suggest would need to still do near on the same amount of work that a single server does now, just on top of that, they'd need to communicate with every other server and maintain a synchronised chain of events.

Beyond that, if they did choose to implement an idea like this, the first step would be rewriting the server software to be able to handle all of these components running asynchronously, which would pretty much require them to rewrite it in a manner that supports multithreading (or very close to it). If they did that, the problem would already be solved, as they could distribute the processes over multiple cores.

Essentially, if they were willing to rewrite their server software, the solution is incredibly simple. Since they aren't that's where systems like BiaB get developed to try to move the manageable parts off of the node.

ShahFluffers
Ice Fire Warriors
#11 - 2014-05-27 09:44:29 UTC
I think the DEVs are already working on something akin to what the OP has described... it's called "Brain in a Box" (if I recall correctly) and the idea is to separate the "hard" ship and character information from the actual server calculations (or something like that) and put them on seperate nodes that are designed to pull from each other as needed rather than crunch it all in one go.

The main hurdle they are having (again, if I am recalling correctly) is straightening out the back-end legacy code without causing said code to wail in some unholy elder tongue and consume a DEV's brain.
Thankfully though the DEVs have a large supply of alcohol to help them in their work.... unfortunately this is also what resulted in the mess we see now as alcohol makes one give up half their brain for the unholy coding protection it provides.

God help us.
Velicitia
XS Tech
#12 - 2014-05-27 09:46:49 UTC
This is bad for reasons already given above.

In addition, while drones (and ships, and remote effects, and whatever else) cause strain on a system, the _most_ strenuous activity that a node has to deal with is system jumps.

One of the bitter points of a good bittervet is the realisation that all those SP don't really do much, and that the newbie is having much more fun with what little he has. - Tippia

Ogir Tenno
Marvel-Yukon
#13 - 2014-05-27 09:48:48 UTC
Velicitia wrote:
This is bad for reasons already given above.

In addition, while drones (and ships, and remote effects, and whatever else) cause strain on a system, the _most_ strenuous activity that a node has to deal with is system jumps.


Which would be eliminated, because they wouldn't need to serialize session data anymore and transfer it to another server. Ship-nodes don't change!
Corraidhin Farsaidh
Federal Navy Academy
Gallente Federation
#14 - 2014-05-27 09:55:28 UTC
ShahFluffers wrote:

The main hurdle they are having (again, if I am recalling correctly) is straightening out the back-end legacy code without causing said code to wail in some unholy elder tongue and consume a DEV's brain.

God help us.


Hands up who wants live streaming webcams on the devs in case this actually happens...
Ogir Tenno
Marvel-Yukon
#15 - 2014-05-27 09:58:12 UTC
ShahFluffers wrote:
I think the DEVs are already working on something akin to what the OP has described... it's called "Brain in a Box" (if I recall correctly) and the idea is to separate the "hard" ship and character information from the actual server calculations (or something like that) and put them on seperate nodes that are designed to pull from each other as needed rather than crunch it all in one go.


It's basically exactly this! What I said in the OP was a suggestion. We strip out the ships from the system-node so that the data that needs to be transfered is minimized.

I see the point that a ship-node might not be handling all calculations. However, they could do calculations and stream them directly to the user. Especially damage/repair.

Thats not much, but that is server-load anyways!
Lucas Kell
Solitude Trading
S.N.O.T.
#16 - 2014-05-27 10:07:40 UTC
Ogir Tenno wrote:
ShahFluffers wrote:
I think the DEVs are already working on something akin to what the OP has described... it's called "Brain in a Box" (if I recall correctly) and the idea is to separate the "hard" ship and character information from the actual server calculations (or something like that) and put them on seperate nodes that are designed to pull from each other as needed rather than crunch it all in one go.
It's basically exactly this! What I said in the OP was a suggestion. We strip out the ships from the system-node so that the data that needs to be transfered is minimized.

I see the point that a ship-node might not be handling all calculations. However, they could do calculations and stream them directly to the user. Especially damage/repair.

Thats not much, but that is server-load anyways!
BiaB is vastly different from what you were suggesting in your OP. BiaB just moves the static calculations for how skills and modules affect a ship onto a different server, which means they don't need to calculate when a character undocks, changes ship, explodes or jumps. This has nothing to do with the actual ship calculations, only the math for the stats.

And while it will help with keeping the node stable while it fills up, it won't actually help much with the battle. Most of what the biggest battles spend their time calculating is the ships interacting, which it will continue to do.

If only the single node and the user needed to know about damage/repair, that might work, but all users need to know about it, as does the system node. Each node also needs to know portions of what the other nodes calculate to do their calculations, so each node would pretty much end up calculating everything.

The Indecisive Noob - EVE fan blog.

Wholesale Trading - The new bulk trading mailing list.

Ogir Tenno
Marvel-Yukon
#17 - 2014-05-27 10:18:55 UTC
Lucas Kell wrote:
Ogir Tenno wrote:
ShahFluffers wrote:
I think the DEVs are already working on something akin to what the OP has described... it's called "Brain in a Box" (if I recall correctly) and the idea is to separate the "hard" ship and character information from the actual server calculations (or something like that) and put them on seperate nodes that are designed to pull from each other as needed rather than crunch it all in one go.
It's basically exactly this! What I said in the OP was a suggestion. We strip out the ships from the system-node so that the data that needs to be transfered is minimized.

I see the point that a ship-node might not be handling all calculations. However, they could do calculations and stream them directly to the user. Especially damage/repair.

Thats not much, but that is server-load anyways!
BiaB is vastly different from what you were suggesting in your OP. BiaB just moves the static calculations for how skills and modules affect a ship onto a different server, which means they don't need to calculate when a character undocks, changes ship, explodes or jumps. This has nothing to do with the actual ship calculations, only the math for the stats.

And while it will help with keeping the node stable while it fills up, it won't actually help much with the battle. Most of what the biggest battles spend their time calculating is the ships interacting, which it will continue to do.

If only the single node and the user needed to know about damage/repair, that might work, but all users need to know about it, as does the system node. Each node also needs to know portions of what the other nodes calculate to do their calculations, so each node would pretty much end up calculating everything.


Why should the system node be interested in more than the positions?

Even IF the system node should need more info: applied damage and repairs/cap/missile impacts, etc. could all be calculated by a ship-node and be given to the server as a result. No need fot the server to calculate it.

Why should other nodes be interested in the amount of shield/armor/hull a ship has left?

What would prevent the nodes from informing the user itself?
Lucas Kell
Solitude Trading
S.N.O.T.
#18 - 2014-05-27 11:30:13 UTC
Ogir Tenno wrote:
Why should the system node be interested in more than the positions?[/quote}The central nod would need to regulate all of the other nodes. Or are you expecting each individual node to be hammering all of these service node that are set up around them individually, and each "ship node" is reporting the entire systems changes to the client directly?

[quote=Ogir Tenno]Even IF the system node should need more info: applied damage and repairs/cap/missile impacts, etc. could all be calculated by a ship-node and be given to the server as a result. No need fot the server to calculate it.

Why should other nodes be interested in the amount of shield/armor/hull a ship has left?

What would prevent the nodes from informing the user itself?
The problem is you are looking at a very simplistic view, where the only thing that matters to each node is that individual ships damage and repair input and output. What you fail to account for is that all of the ships need to be able affect each other in sequence, and report all stats in real time to all clients as well as the services that log and store the data for the ever changing scenario.

In your proposed solution, each node would need to know everything about every other ship to determine if it was/wasn't affecting the ship you are looking at and to report that back to the client. Simply saying "the ship nodes only need damage/repair and the system node only needs positions" is vastly underestimating the amount of different process and calculations that need to happen to run the simulation. Each ship system would need to be a full core, and not a raspberry pi, and even then the communication bottleneck would be substantial. Chances are it would just lead to massive desyncronisation issues on top of lag.

I think perhaps you need to read into the eve server architecture and read about how their servers currently run and what they actually do before bringing up a suggestion which itself is nothing new. Pretending it's simple doesn't mean that it actually is that simple.

The Indecisive Noob - EVE fan blog.

Wholesale Trading - The new bulk trading mailing list.