-
Notifications
You must be signed in to change notification settings - Fork 710
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Collect stats about message sizes in JITServer #9708
Comments
I am thinking that the best place for collecting message sizes is:
Here we have access to the total message size and the type of the message can be obtained with |
Attn: @EmanElsaban |
Stats could be collected with utilities from |
I'm keeping track of the size of different types of messages sent using msg.type() and I'm using the class TR_Stats to store avg,min,max and stddev of every type of message. I declared a static array in CommunicationStream.hpp and I'm using that to store in. issue: eclipse-openj9#9708 Signed-off-by: Eman Elsabban <eman.elsaban1@gmail.com>
This Excel sheet contains the stats collected from Acmeair benchmark: |
Thanks. @EmanElsaban could you please generate the same stats from the server point of view (messages received by the server)? In this case you may need to add the print routine to another place. |
I included the message stats of Acmeair on the client and server side in this excel sheet, Thank you. |
I ran it a second trial on Acmeair to print out the total number of messages on server side, since I didn't print it the first trial: |
The compilation request is the largest contributor: it has the largest messages (115KB), the latest average message size (17.5 KB) and the largest number of bytes being received (95 MB). This represents 55% of the total bytes transferred from client to server. |
To trigger the jitDump use the option -Xdump:jit:events=user from the server side and then run the Java client and then kill -3 <pidof jitserver>. This will print the message stats received by the server at shutdown. issue: eclipse-openj9#9708 Signed-off-by: Eman Elsabban <eman.elsaban1@gmail.com>
The original message read involves at least two reads: The first one is to read the message size. The second one is to read the rest of the message based on the message size that’s read in the first read. This change optimizes the incoming message read to attempt to read the full buffer capacity in the first read. It then decides whether or not subsequent reads are required based on `bytesRead` from the first read. Also increase `INITIAL_BUFFER_SIZE` to `18000` from `10000` based on the average message size observed in eclipse-openj9#9708. Implements eclipse-openj9#9711 Signed-off-by: Annabelle Huo <Annabelle.Huo@ibm.com>
Stored the ramClasses in an unordered_set before sending the compilation request to the server. I check if the ram class (clazz) is cached in the set. if it is not stored then it will be cached in the set and will send the corresponding ROM by setting the serializeClass bool to true. If the clazz is already in the cache set this means it has already been sent to the server. So send the clazz again but with empty ROM class (empty string for ROM Class) by setting serializeClass bool to false. issue: eclipse-openj9#9708 Signed-off-by: Eman Elsabban <eman.elsaban1@gmail.com>
Resolved by #9870 |
The goal is to determine which messages are larger and whether such messages can be reduced in size. For instance, the message that sends the compilation request is probably on the large side because it sends the entire ROMClass to the JITServer. If we find it worthwhile, we may be able to keep some cache at the client that memorizes which ROMClasses have already been sent to the server so that we don't have to send them again.
The text was updated successfully, but these errors were encountered: