HPC (High Performance Compute) Architecture

Josh Leverette coder543 at gmail.com
Mon Mar 14 16:24:22 PDT 2011

HPC (High Performance Compute) Architecture

...the means by which we can make the Lion tremble.

I have hung around in the shadows of Wayland's development since it was an
infant, reading the different discussions that have taken place. I've
commented occasionally, but not very often. I don't believe I've ever
requested a feature, but this afternoon I was mowing my grandfather's lawn
and had plenty of time to think about what feature Wayland could provide to
catapult Linux to the top of the Operating System Wars. This is the idea I
came up with, please give it consideration. I think it is well within the
abilities of the people who have been contributing to Wayland so far, and
could attract other skilled developers to this project, and that's without
mentioning all of the long term impacts it could have. I've recently been
thinking about how difficult it will be for Linux to compete with Mac OS X
Lion, and this feature came to me as one that would make Linux a very
desirable option.

In Mac OS X Lion a variety of features are coming which make it extremely
competitive with Linux in ways that are very attractive to consumers and
enterprises alike. Among these are the inclusion of Apple's very friendly
server software in regular Mac OS X, the presence of the lucrative App
Store, the Mission Control interface, and very advanced and effective use of
multitouch from the trackpad.

Windows is dying, this will just be breaking already shattered glass, so no
need to discuss this here really.

Here's the gist of the idea, something that would give Ubuntu and other
Linuxes a step up on the other operating systems if implemented well inside
of Wayland from the start. I was recently on my iPad and discovered an app
called iSwifter which allows you to browse the web with fully enabled flash
content. What it does is it renders these pages on (as far as i can tell) an
Ubuntu server/desktop thing and streams it by using ffmpeg in a compressed
stream. Any input is sent back to the server for processing and the page is
manipulated accordingly and the result is returned to the iPad. This creates
the illusion of actually browsing the flash-enabled web on an iPad.
Occasionally you will see compression artifacts, but not very often.

Take this idea, but have it implemented in Wayland. Ideally this could be
negotiated with the window manager so that it could be done on a per-program
basis. When an application, such as Blender, is being used on a slow
computer or a netbook, it might be desirable to have it run faster. There
would be a button on each program's primary window which would allow you to
transition it to a remote High Performance Compute server. The application
would write down everything that it needs to in order to open back up to
exactly where it was before, this information would get compressed and sent
to the server. The server would start an instance of this application in a
sandboxed virtual machine (with resources limited based on the type of
account the end user is using, whether its a free account or a partially
limited account, or a high paying account with access to lots of resources)
and this application would load up the saved state information to resume
where it left off. Preferably the entire virtual machine would be running
from a RAMDisk in order to increase performance and security (as the memory
would forget what had been going on as soon as the copy of the virtual
machine is shut down). Whenever access to a file is requested, it gets
compressed and sent over to the virtual machine. The file would then be kept
in sync between the two computers. The application would be streaming its
interface in a compressed fashion to windows that are of the correct sizes
so that the interface appears to still be local. Each window would have its
own stream. User input, such as keyboard, mouse, or window resize/minimize
events would all be streamed back to the server for processing.

Before the transition would occur, it would need to check the integrity of
the internet connection, if it doesn't meet certain latency requirements and
bandwidth requirements, it might have to warn the user against running
remotely, but it could still work it out on a slow connection, it just might
not be as amazing of an experience. During the transition time from client
to server, or server to client the window would be greyed out and a nice
looking rounded box could be displayed showing a message that says the
application is being transported and it could show a progress bar
representative of the status (including compressing the app, uploading the
app, and resuming the app on the server) and a cancel button (for when
transitioning to the server). When the application is running on the remote
server, the title bar of each window of that application would ideally be a
different color. If we were using the Dark ambiance theme from Ubuntu, a
nice glowing blue color would still look good but clearly mark that this is
a remote application. The largest forseeable problem would be keeping a
synchronous copy of the app as it is on the server with the user on the
local machine in case of a sudden termination of the connection so that the
program would hopefully not crash. The files would already be syncronized

The final feature that would make this a killer feature for everyone from
consumers to enterprisers would be being able to easily set up your own HPC
service on your own hardware. It would have a user friendly interface, and
it could set up accounts with limited resource access. However, this
interface would have to be manipulated locally and manually. For a small fee
they could purchase a package which would allow for end users to enter
payment methods and control their account settings from anywhere in order to
create an HPC business. By default a copy of wayland would connect to either
a service hosted by Wayland or by the individual distribution, such as
Canonical. This service could generate revenue to fund Wayland development
or each distribution's development or just give revenue to third parties if
the user chose. In order for this feature to be a winner, there should be a
free account which would give say 1GB of RAMDisk space and 1GB of virtual
machine RAM (total of 2GB real RAM) and limited access to a graphics card,
perhaps also limiting the amount of server time they could have access to.
This would give them a taste of the product, and for a small amount of money
($5/month, or whatever) they could upgrade to greater resources. As far as
the end user is concerned, this would mean they could play really intense
games on a netbook with the graphics settings at maximum, or they could
encode a movie project a lot faster, or they could make their own animated
movies or short films much faster. All of this without having to pay for a
$1000+ machine. For this feature to truly work, it would have to be
implemented either in the core of Wayland, or in a window manager on
Wayland. I'm not too sure how it would be done, but only that I have faith
it can and should be done. Thank you for considering this idea.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/wayland-devel/attachments/20110314/b9d66cb5/attachment.html>

More information about the wayland-devel mailing list