Posts Tagged ‘conference’

Code Generation and Optimisation

Wednesday, April 28th, 2010

I have had the pleasure to attend the conference on Code Generation and Optimisation this week in Toronto, where Kenneth Hoste presented our paper. The conference was pretty amazing. I must admit that compilers and such are not my forte (at least, the nitty gritty details are not), but there were a number of talks that really stood out IMO.

To begin with, Ben Zorn’s keynote “Performance is dead, long live performance”. I’ll never be best friends with Microsoft, but the talk was very interesting and overall, Ben’s cool. In the talk Ben showed that people have been losing focus on performance, shifting to correctness over the past 5-10 years. This was in stark contrast to the 1990’s where papers really focused on performance. This seems like an important trend, but, as the title reveals, performance is still important, even if not the most prominent item. The reason is that performance sells. People use tools and gadgets that have good performance (the comparison between the iPhone and a Windows Mobile phone was made, guess who won?). The important point was here that there is a tradeoff. People are willing to sacrifice performance for security and vice versa.

In the second keynote talk, CJ Newburn showed that there are two sides to heterogeneity: we have the system, and the tool infrastrcuture. The former, we want to make heterogeneous, but we do not want to have it visible to the user, i.e., the infrastructure should paint a homogeneous picture. The examples given include the various extensions to the ISA that have made their way into the CPU core, starting from floating point operations to SSE. The most important takeaway was that the masses want it simple, since the broad base of programmers focus oh what to do, not how to do it. So there should be a homogeneous interface, but also hooks to each of the underlying heterogeneous components such that skilled programmers can get down and dirty.

The first talk was also the winner of the best paper award: PinPlay, on a replay system on top of PIN. I do not know at this point if I agree with this setup, but the work seems pretty impressive. It was presented by Christiano Pereira. The tool aims to capture a number of events, including thread scheduling and system call results. Supposedly it is OS agnostic, and HW agnostic, so application can be recorded on one platform and replayed on another platform. This does need some extra support, for example, to address different thread scheduling mechanisms across OSses. There were three major use cases: (1) checkpointing and sampling for simulation, (2) sharing workloads between people, by providing the logs and let the other party replay the application, and (3) debugging purposes. The authors also claimed it is possible to re-log, i.e., to record an execution during replay. I wondered if it would be possible to use the tool in such a way that bugs due to parallelism could be detected, since the tool itself has quite a large time-overhead. This can cause Heisenbugs to be invisible during the recording phase. However, if it would be possible to reduce overhead by recording only the thread interactions, such that the bug can manifest itself, and record the rest of the execution during the replay, I think.

The second talk I was really impressed with was on An Efficient Software Transactional Memory Using Commit-Time Invalidation, presented by Justin Gottschlich. He’s a very good presenter, and went through the story with heaps of enthusiasm. The bottom line is that one should have committing transactions invalidate, rather than validate. This means that instead of checking all reads and occasionally checking the writes, the transaction should check it’s writes and see if others are reading these elements. Then, there is no need to check the reads. Apparently, this is not always a win over validation, but when it does win (in highly contending workloads), it wins big time.

After the last session, the winner — or should I say winners, as there was a tie — of the best presentation award were chosen by vote of the remaining attendees. The two winners were Justin Gottschlich and Jason Mars. The former really is the better salesman, but the latter was holding up pretty well.

Outside of the technical program, I have learned at least one cool concept. When going to a restaurant, ask for a surprise. I think (if there’s nothing you really loathe on the menu) a great idea. Moreover I was introduced to it by Tipp Moseley, a very cool frood. Certainly one who knows where his towel is :-)

On the day of the return to the country still known as Belgium, we visited the CN Tower. I can be quite short here: totally mindblowingly awesome. It took me a few seconds before I dared to step onto the glass floor, but once on there, looking down was an amazing experience. After that, there was a slight rush to the airport. Both Kenneth and I did not manage to sleep much, if at all, and it was killing to stay awake at Schiphol while waiting for our connecting flight to Brussels.

All in all, it was very interesting, and I’m really looking forward to next year’s CGO. Chamonix, here we come!

HPCVirt 2010 workshop

Tuesday, April 13th, 2010

The paper that got rejected at VEE — due to not good reasons, if you ask me — made it in for HPCVirt, which is the EuroSys workshop for High Performance Computing in virtualised environments. So I am currently residing in Paris for both the workshop and the main EuroSys conference. The former comprises only 4 talks, two of which have been fairly disappointing so far. I am not sure how the other attendants feel, but it is my impression that our performance metrics paper generated a lot more interest and discussion than the other papers :-/

Except for the last paper. ‘Experiences booting 10M virtual machines’ was pretty much kick-ass. The authors tried to simulate a botnet, reportedly due to the dangerous nature of buying the (GPL, ahem) botnet source code and then publishing about it. So they designed their own lightweight VM, which basically uses 20M, and which has a manager that copies the files needed to execute an app (shared libraries and all that) to a ramdisk upo execution, and throws it away afterwards.

From what went on between, I do not recall that much (I did take notes :-) . The ending panel discussion, was pretty interesting until it started to die. Points raised were, amongst others, why do we need anything besides container based virtualisation, and what about QoS.

Virtual Execution Environments 2010

Thursday, March 18th, 2010

The past few days, I’ve attended VEE 2010. I registered prior to receiving the definite decision on the paper we submitted — it was rejected (with weak reviews IMHO, but still rejected is rejected and nothing you can do about it). So I did not really have an idea on what the program would be about. Turns out, it’s petty OK, even though most of it is besides my general area of interest/work.

Nonetheless, the opening keynote talk was pretty interesting, if only for the take Peter Chen has on education and teaching systems. The bottom line is: challenge students with something difficult and give them the tools and help to get there. His first year students are allowed to pick anything to implement as a system, provided it is fun and not completely impossible. However, it seems to me that the requirements in teaching assistants is pretty high. Peter said that undergrad students are assisting, and that is one path we cannot take in Belgium. Students must study, not assist. I do like the bottom up approach, but I wonder how feasible it would be, given that our students have trouble grokking pushl 4(%eax). But still, given a small Altera board, a simple instruction set ABI, and simple rules, they managed to do nifty stuff. On example was a Guitar Hero clone, but using a real instrument, where the system recognised the note that was played. Another example included a game, driven by voice (tone, pitch, length) to fly a chopper through a 2D cave. The conclusion: an enlightening talk, showing that maybe we underestimate our students too often.

The first session was on debugging, and the most interesting talk was on a nifty VMM based replay system. The major improvement over what I recall from the work Frank Cornelis did at ELIS, was that these guys reduce the amount of data to retain, while still following all of the execution. Furthermore, they show that a replay system is but a state machine, and such a state machine can be built at user level, taking the (transformed) VMM recorded data and shoving it to the replayed process. Basically they allow replaying on any machine, and they are completely OS/app agnostic. Hence sending bug reports should be transparent enough to allow users to have the recording on at all times.

The keynote of the second day revolved around Singularity. Yes, the stuff from Microsoft. Now, everybody who knows me, knows that I’m no fan of that particular company, but I do dig their research department. This was followed by a talk on XIR trying to decouple the JIT compiler from the runtime system, or at least to define the interface in a better way. The second paper presented this morning was VMKit, which was pretty cool. Using standard software components (LLVM, MMtk, and libpthread), the authors define an interface between these components and to the higher level language. They showed you can easily implement a Java and a .NET VM on top to VMKit, with reasonable performance. J3 is around 2x slower than Jikes RVM, whereas N3 is comparable to Mono. I think this can be a very handy toolkit to move our COLE research to.

Google also had an invited talk on their new gadget to run native code inline in the browser. There are some restrictions, such as not all assembly instructions are allowed, which makes sense, but it also limits what applications you can run natively. One of the examples was Quake, which made me think the tool was pretty cool. Yet, we already have a native Quake Arena type of plugin. Second, at this point it is unclear what other application types you would want to run, but I can see that with ChromeOS being released onto the (unsuspecting?) world, having something that allows classical apps to be transported to the browser OS, is a nifty thing indeed.

In the afternoon, there were some more talk on VMMs, the first of which presented NEON , which uses the VMM and QEMU to see where tainted data is going. It was pretty cool that they can follow copies of the data, even as they are copied using copy ’n paste like actions by the user, to prohibit sensitive material to be send outside of the trusted zone. One remark was that typically, people see that everything gets a taint after a while, but Qing Zhang claimed this was not the case in their experiments, which, admittedly has not been running for months on end. I thought it was a pretty cool thing to do, and it shows that perhaps the notion I have of measuring QoS VMM side is not such a bad idea. Or at least not completely unfeasible.

The last talk on Thursday which kicked major ass was on AASH, which is an Asymmetric Aware Scheduler for Hypervisors. The premise was that the hypervisor (Xen, in particular) is not aware of the possibility that the machine potentially has a heterogeneous array of CPUs or cores. For example, a new system might feature a Corei7 and several Atoms. The former being used for CPU bound workloads, the latter being used for memory bound workloads. The authors extended the Xen credit scheduler with a second type of credits, i.e., fast credits, to be split among so-called fast VCPUs, whereas the original credits (the slow credits) are then shared among the slow VCPUs. When a fast VCPU runs out of fast credits for the current accounting time, they are moved to a slow CPU. I think it’s a pretty brilliant and simple idea. The results are indicative of the fact that this works well in practice, at least for SPEC CPU 2000 benchmarks (crafty being CPU bound, mcf and equake classified as memory bound). The only thing I found to be subpar was the use of execution time for measuring how well these benchmarks were doing under the dual credit scheduler. In a multiprogram system, per-program execution time is not the right metric. Instead, one should use STP and ANTT (Eyerman and Eeckhout, MICRO 2008) for execution time based workloads or TNT and ANRT (Georges and Eeckhout, HPCVirt 2010) for throughput based workloads.

In the Friday Java session, the allocation site tracking was the most impressive paper, in my opinion. Again, a fairly simple idea, but it does seem to help against memory leaks. Up to now, Mike Bond et al. have proposed a number of approached to deal with semantic memory leaks, but this paper seems to provide the means of locating them, without too much overhead. The key idea is that one replaces some field, or part thereof, in the object header to identify the allocation site where the object was allocated. Upon GC, as each live object is walked, statistics can be assembled and the allocation sites with the most surviving objects may indicate leaks, provided the heap usage keeps growing after each global GC. The authors define two options, using the hash code header field, or it this is not present, the class pointer in the object header. They adequately deal with all potential problems, such as the hash code field colliding (they introduce a random value and shrink the allocation site ID size for hot sites).

The last few talks on binary translation we, put bluntly, hard to follow. So that about wrapped it up for VEE. I had a number of interesting chats with people from VMware, Oracle (formerly BEA, and it seems they still prefer that), and the ubiquitous Steve Blackburn. If all goes well, I’ll be back next year.

FOSDEM 2009

Tuesday, February 10th, 2009

After a few years, I once again managed to attend the FOSDEM conference. It was a good experience, and I enjoyed most of the talks I attended.

The opening talk was preceded by an overview of the conference, the beer fest of the previous night and the FOSDEM dance, where geeks showed off their skills. The room was quite packed, with people moving in all the time during the first minutes of the talk given by Mark Surman on a Free.Open.Future.

Crowd

Mark’s main points were on the successes of Open Source thus far, especially the adoption of open applications and platforms in the last year: WordPress, Firefox and the Linux powered netbooks. He stressed that the rise of multiple browsers has helped getting rid of websites that are only willing to serve pages to the Internet Exploder. Of course, code also needs content to make things interesting for people. The main example Mark talked briefly about was Flickr and the mass of Creative Commons licensed images.

Yet the road ahead seems to be one where Open Source is heading into a very closed environment: the mobile world. It seems that the mobile environment will need a different conceptual map from what we have been using in the non-mobile computing world. Pressure points to get past the closed ecosystem, where mobile phone operators dictate law, are still largely unknown. Mark claimed we need better and bigger maps to gain an understanding of how the mobile world moves, who the payers are and how we can break through misconceptions. Several things probably ought to be on the map: strong values, freedom beyond just code; free software that empowers people (even those who do not agree with the free and open idea); users as hackers.

Map

After the talk, I went out to peek at the booths, after which I returned to listen to the remainder of the Debian Talk. Seems like a release is due by February 14th. We can only hope.

The afternoon started with a few talks on the state of the OpenJDK, IcedTea, and such. The Free Java DevRoom was packed. I doubt were conformed to the fire department regulations.

Free Java DevRoom

I had expected a lot off information on the state of the VM itself, but all I got was a short list of stuff the VM would incorporate: a new GC, compressed 64-bit pointers, and several HotSpot runtime compiler improvements. The OpenJDK 7 will be lacking closures, first-class properties, operator overloading and bigdecimal syntax. Joe Darcy proceeded with a short overview of OpenJDK 6, for which an open Mercurial repository outside any SUN firewalled domain was created. Mark Reinhold took up the presenters place talking about JigSaw, and told us most of the stuff that was put in this blog post. I mainly retain that they want to get rid of unscaling jar files and fully modularize the whole ordeal.

The last talk I attended on Saturday was a short intro to Scala where Martin Odersly tried to convince the crowd that the Scala approach was the way forward. I pretty much liked the fact that it adopts a functional approach to programming, in some given sense of functional. I list the main points that drew my interest: strong typing, type inference, little boilerplate are the basis. Scala has higher-order functions, algebraic types, parametric polymorphism and subtyping and inheritance, dynamic configurations, classes as partial abstractions. Yet it does have side-effects (not encapsulated), yet it uses functions as first order objects (currying, partial application, …) Functions in Scala are also objects, embodied by traits. This means that functions can be subclassed or specialised, e.g., for arrays, collections, etc.

For the moment, however, the only advantage Scala seems to have over e.g., Haskell is that it can fully reuse the entire Java codebase that floats out there. Still, I think Haskell is still the better programming language. And a number of geeks certainly seemed to agree as the RWH book sold out ofter a single day. Of course, O’Reilly might not have carried a whole lot of them to begin with, but I thought it neat nonetheless.

Haskell @ O'Reilly

On Sunday I arrived early, not wanting to miss Dries’ talk on Drupal 7.

Dries - Drupal 7

Currently Drupal 7 is still in a flux, with a code freeze months away :-) The biggest issue that is being tackled is usability, which is critical to adoption. A lot of small things are already in: password strength checker, installation profiles where much used features are set up automagically. As Dries mentioned a while back, Mark Boulton will do some work on the usability front. Cool is that files have become first class citizens, with hook readily available to plug into and get notified when files are accessed, changed, etc.

The major point, to me, was the move towards more semantics in the output of the Drupal engine. This should allow machines to more correctly interpret what each piece of data represents and how the user will perceive it. Another major issue is getting the CCK to the Drupal core. Dries mentioned that this move has driven a lot of innovations. Fields are now in core, which enables a lot of other things. Thus, a node can have Fields, which can be (almost) anything. Basically, the CCK is now reduced to the UI in contrib.

By Sunday noon, the stack of Using Drupal books had also dropped to a single item.

Drupal luuurve!

I noticed there was some love/hate relationship with Gnome:

A fine line.

In the afternoon, I attended the Ext4 talk by Theodore Tso, which seemed to indicate we’re moving back to an old scheme where contiguous regions are stored in the inode rather than addressing each block separately. I wonder how well this scheme will hold under a full disk, or a disk where a lot of stuff gets written and deleted. Apparently there will be a defragmenting tool running in the background. I am still partial to the whole idea.

I remained in the Janson room to listen to Kris Kenneway, a FreeBSD hacker, talk bout peformance analysis in FreeBSD. It was a good talk, although it started a tad slow.

High-level performance analysis in FreeBSD

The last talk of Sunday on the Google SoC was also one of the best, except for the typically American style where the crowd is supposed to go crazy and, as Leslie Hawthron put it ‘feel the love’. I thought not :-) But, the presentation was nifty and she managed to convey her message well, I think:

FSCKING!

And so it was. But in the face of overwhelming odds, people can thrive. So did the group at Google that runs the SoC.

All in all, a fun experience. I even learned a few things, and if my schedule allows it, I’ll be back next year.

VEE 2008

Wednesday, March 5th, 2008

I am in Seattle for the VEE conference. I had better be bloody interesting, because the flight over here was tedious. Please remind me not to hop from Europe to Seattle in two jumps next time. If you map the flight curve on the globe, the trip from Brussels to Chicago is about as long as the trip from Heathrow to Seattle. And the food on the AA flight … sucked. I had brought two apples and a banana along, but since you cannot import apples into the USA, I had to hand them over at customs. Luckily I ate the banana. On a positive note, they sell very good apples here. I guess they’re filled with hormones, because they are huge.