Week 2
This week was really a week of work and I loved being involved with the Tasks. Just to mention apart from my GSOC, I was selected as a contributor for C4GT which is "Code for Government Technology" Program held by Samagra-Shiksha a part of Indian Government. Now, I was part of two beautiful open source projects from two beautiful Organizations. So, I was expected to learn about React-Admin and JSON-LD and much more popular and underground technology. It was really a booster to my learning curve working with both simultaneously. C4GT is whole different game, If I get time you can expect a separate book for the same by me.
We had a meet at the start of the week where we discussed the progress made last week and then got our next week's tasks listed. Let's talk about all in details.
As you might have already seen the image from last week, The first task was to get the numeric columns before the comm
, dso
and Symbol
. So, I made changes in the script which converted the perf reports to CSV to print the numeric columns first in order. This was easy fix.
Now, the current measures makes no sense to the readers. Raw data is not useful in any ways. So, We need to convert the data into some relative measures. For Example, In measuring the CPU metrics, If the data file consists of Cycles
and Instructions
then we need to also add a measure of CPI
. Also the raw data must be formatted like The Cycles and Instructions must be percentage of total of the respective measures. Similarly for Cache Metrics if we have branches
and branch misses
then we must add a measure of Branch Miss Rate
.There was an issue that some metrics were not calculated by the Intel processors so we couldn't extract those data (L1 instruction loads). So, I spent some time fixing the code for including new metrics and improving the existing ones. At the end, It looks really nice. Don't worry, At the end of page, I will stick the SnapShot.
I was expected to install the CVMFS
which is Cern VM (Virtual Machine) FS (File System) and mount the geant4 public repository which would create the bare clone on my system and allow me to run the jenkins reports So, I can run the perf reports available in the CI for Geant4. This was important to do because the current flamegraph which I had was not showing up the actual measures. So, I had to set this up and run the jenkins script. Now, Let me describe a problem faced by me in doing this. I use Ubuntu 22.04 ( Sorry to Linux Community, It might hurt the sentiments for using Ubuntu ), But CVMFS don't have the Fuse Libraries set up for 22.04 Jammy Jellyfish. So, I went to the GitHub Hosted repo and found there, they are working currently for this. But there a simple work-around was suggested, Which was fetching the OpenSSL library by yourself and then using the Fuse for 20.04 as it is because the SSL was not packed by default in Jammy Jellyfish. While exploring this, I found out that the suggest work-around was upgraded to 2.15 form 2.13 and for some reason 2.13 was not existing any more on the umd mirror. So, I commented a new work-around in the issue itself and got the CVMFS settled on my system. Now, It was working fine and I mounted the Geant4 repo in it. Next was the CCACHE error while running the jenkins script. I fixed the report script of jenkins and made a pull to the original repo of g4run. And I started running the script. It was working fine, But meanwhile for some spooky reasons my perf got broke and it was running continuously. So, I was not actually able to run the jenkins script. This is something I need to do it in presence of my mentors in the call itself to let them help me figure out my blunders.
Another task of project for the week was to implement the Tree-Maps from the data which was coming out from the perf reports using a script provided by Guillherme Amadio
. Next, I wrote the algo for the treemap. And now, We had the treemaps in the site. But, One problem with them was, Initially When I tried loading the treemaps It won't get rendered. Because the treemap nodes were required to get the offset positions of their measure on the screen size. But, I had used a property of CSS to let the contents of the site being hidden and it was display : none
So, All the coordinates were returning 0. It took me a while to figure out why the treeMaps are not loading but finally I found a way out of it to get the display : none
property being mocked without actually hiding the elements.
So, All I did was replaced it with visibility : hidden
and position : absolute
. This helped with the site being able to render treemaps along with the other tab contents. It also improved the buffer performance of the site, Which I measured using performance analytics from the Chrome Dev Tools (Beta). I also added the Inverted Flamegraph but those will be soon replaced by The real working flamegraphs.
As promised in the middle of the text (If you read it fully), Here are some glimpses which depicts the progress at the end of this week.