Carnegie Mellon
SCS logo
Computer Science Department
home
syllabus
staff
schedule
lecture
projects
homeworks
 
 

15-410 Virtual Andrew Accelerator Documentation


Introduction

One of our S'20 students, the intrepid Fan Pu Zeng, discovered a performance accelerator for Simics which will help some students substantially.

This is likely to be useful if your ping time to Pittsburgh, as reported by, e.g., ping linux.andrew.cmu.edu, is much over 50 milliseconds.

Approach

The basic issue is that Simics makes many small drawing requests to the window system. The X Window system was designed to support a program that wishes to draw (Simics) being on the other side of a network from the display to draw on (your laptop). However, in practice usually the program and the display are on the same machine, so some programs aren't careful with how they draw.

If you are using X forwarding from a very distant place, each drawing request (essentially an RPC) must be shipped across the network, and in practice the answer must come back, before the next request can be issued. As discussed in the RPC lecture, if network latency is high this is dreadful.

The approach we are documenting is to have Simics draw on a virtual display that is very close to it (probably only 100 feet away), after which you will view that display via a tool that is explicitly designed to deal with long-haul network delays. Basically, Simics will draw on the virtual display hundreds of times per second and you will view the virtual display at a frame rate commensurate with your network.

License code

Download the X-Win32 Windows installer (even if you don't have a Windows machine!) from here, including accepting the license agreement.

Your personal license code will be found in a file called VN.txt.

LINUX.ANDREW SSH fingerprint

SSH into LINUX.ANDREW however you normally would, then:

$ ssh-keygen -l -E md5 -f /etc/ssh/ssh_host_ed25519_key.pub

Remember the LINUX.ANDREW server fingerprint.

Accessing Virtual Andrew

You can access Virtual Andrew through a browser client or you can install a client specific to Windows, MacOS, iOS, or Android.

Once you're logged in to Virtual Andrew, you can escape via the Windows menu on the lower left: among the millions of things it pops up is, on the upper left, an icon of a human torso, which will let you end the Windows session.

Configuring the Hack

  1. Click the Windows menu on the lower left, scroll down roughly forever, then drag the X-Win32 icon onto the desktop.

  2. Launch X-Win32.

  3. In X-Win32, in the "New Connection" box on the upper right, hit "Wizard...".

  4. Enter a name at the top (e.g., LINUX.ANDREW), pick "ssh", hit "Next".

  5. Enter "LINUX.ANDREW.CMU.EDU", hit "Next".

  6. Hit "Next" again without entering your username and password.

  7. Pick "Linux XTERM" (fourth entry), hit "Finish".

  8. Now under "My Connections" you will have "LINUX.ANDREW" (or whatever you typed). Click on it once, then click the "Launch" button on the right of the X-Win32 window.

  9. Wait a moment for the session-control window to pop up, then you may need to "Activate a new license". If so, "License your copy using an activation key" and enter the code found in the VN.txt file you extracted from the X-Win32 installer. Note that complaints about being unable to contact a license server are usually transient, and you may receive such a complaint even before you enter your activiation key; in other words, those complaints are generally not a sign you have done something wrong.

  10. You will probably be prompted to accept the SSH host key for LINUX.ANDREW; hopefully what you see matches what you were told by ssh-keygen above.

  11. Provide your username and password.

  12. At this point simics46 should work.

Running It Later

Going forward, you can make a Windows "shortcut" for the connection. Launching it will prompt you for your username and password, then Bob's your uncle!


[Last modified Thursday September 10, 2020]