July 19 - 23

Network Problems

I tried to check the data from the simulation over the weekend, but was surprised when ssh wouldn't let me into the system. I thought that I wasn't able to get on because I was logged on or running something, so I decided to go in early on Monday morning to get my data and make some graphs. I was still surprised on Monday when I couldn't log in to the system at work! I mistakenly thought that I might have messed something up with my account since I had left a simulation running over the weekend. Luckily, Elba couldn't log in either, so I knew that wasn't the problem! It turns out that the network was down, so I couldn't access my account at all. I ended up going home early that day (and looking up some data later on, when it came back up!)

Missing Data...

I started graphing the data from the huge batch of simulations that I ran. Then, I realized that some of the data was missing. (I also noticed that, oddly enough, that the simulation had timed out.) I decided to run a few of the benchmarks separately, with the same parameters. Sure enough, I uncovered another bug in the simulator. I hadn't noticed this one before, because it only seems to occur when the data cache is small and just 1 - way (direct mapped) vs. 4-way set associative. So, now I'm back in debug mode. Unfortunately, the errors that I was getting were more difficult for me to trace through. I started to run the benchmarks using different cache sizes, hoping to push the simulator to expose the error in a more obvious way.

I was able to find one error this way. Previously, I had to fix a bug to handle transactional data being evicted from the L1 data cache. In such a case, we needed to write the data back to the transactional cache (tcache) before overwriting the line. In this case, I was trying to overwrite a modified, normal, transactional line in the tcache, which also isn't allowed. I was able to fix this bug because it was similar to the work I've done before. I was also hoping that this would be the cause of the other errors. (I've now found myself crossing my fingers when I run other simulations after fixing bugs in them... I need to stop doing that.) Of course, trying to overwrite the modified tcache line was not the cause of the other errors, so I continued hunting.

I decided to see if I could force the count benchmark to replicate the errors I was getting from the other benchmarks. Count is the simplest benchmark (it uses a certain number of cores to count to 256), so if I could find the error in count, it would be much, much easier to figure out what was going on. Much to my excitement, count didn't work! (It didn't have an error, per se, but the test that checks that the total is what it should be failed.) I spent Friday morning tracing through debug print outs to figure out why count was skipping numbers. With Cesare's help, I was able to identify the error. When a transaction aborts, it needs to restore the data that has been changed. The saved data is in the com cache, whereas the written data is in the abort cache. However, we were saving already modified data in the com cache, so the data written back to memory in case of an abort wouldn't be accurate. Cesare suggested not touching the modified data in the L1 cache, and writing any private data the would need that L1 line in the tcache. I started working on coding that solution, but I've hit a few problems and hidden details. Hopefully, I'll be able to figure it out soon!


Weekend

This weekend was also very, very fun! On Friday night, Kristin and I decided to have a movie marathon (kind of) which consisted of personal pizzas, chocolate chip cookies, Moulin Rouge, and half of Phantom of the Opera. It was really fun, relaxing, and consisted of a lot of (semi off pitch) singing by both of us.

This weekend was also Kristin's last weekend in the apartment while I'm here ( :( ), so Kristin and Julie and I decided to get dressed up and go out to dinner on Saturday night! We went to a really nice, cute restaurant called Local 121. Local 121 only serves local food, so its menu changes by season. We all decided to split a lemon pound cake with blueberries and fresh whipped cream for dessert - it was absolutely delicious!