<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Pradeep Padala's blog</title>
	
	<link>http://ppadala.net/blog</link>
	<description>Virtually the best blog on the web!</description>
	<lastBuildDate>Tue, 15 Feb 2011 16:45:58 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.5</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/ppadala" /><feedburner:info uri="ppadala" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:browserFriendly>This is an XML content feed. It is intended to be viewed in a newsreader or syndicated to another site, subject to copyright and fair use.</feedburner:browserFriendly><item>
		<title>Challenges in Mobile (Smart Phone) Virtualization</title>
		<link>http://ppadala.net/blog/2011/02/mobivirt-challenges/</link>
		<comments>http://ppadala.net/blog/2011/02/mobivirt-challenges/#comments</comments>
		<pubDate>Sat, 12 Feb 2011 16:58:03 +0000</pubDate>
		<dc:creator>Pradeep Padala</dc:creator>
				<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[Virtualization]]></category>

		<guid isPermaLink="false">http://ppadala.net/blog/?p=772</guid>
		<description><![CDATA[We have virtualization on servers, desktops, laptops and what&#8217;s next? Naturally, the &#8220;smart phone&#8221;. Today&#8217;s mobile phones have become quite powerful that one can easily virtualize them and run multiple operating systems. But, Why do you need smart phone virtualization? Similar to desktop virtualization, the use-case is not that clear, but there are some benefits]]></description>
			<content:encoded><![CDATA[<p>We have virtualization on servers, desktops, laptops and what&#8217;s next? Naturally, the &#8220;smart phone&#8221;. Today&#8217;s mobile phones have become quite powerful that one can easily virtualize them and run multiple operating systems. But,</p>
<h2>Why do you need smart phone virtualization? </h2>
<p>Similar to <a href="http://ppadala.net/blog/2010/06/client-hypervisors-and-gpu-virtualization/">desktop virtualization</a>, the use-case is not that clear, but there are some benefits that can be gained.</p>
<p><a href="http://ppadala.net/blog/wp-content/uploads/2011/02/mobile_hypervisor1.png"><img src="http://ppadala.net/blog/wp-content/uploads/2011/02/mobile_hypervisor1-200x300.png" alt="" title="mobile_hypervisor" width="200" height="300" class="alignright size-medium wp-image-786" /></a></p>
<ol>
<li><b>Reducing vendor lock-in</b>. Can you run iPhone applications on an Android phone? Currently, no, but with virtualization this might be possible. There are issues with Apple (or other vendors)&#8217;s mobile OS licensing that make it illegal to do so, right now. You can only run iOS on Apple approved devices, but this may change in the future. Many old phones have legacy applications and libraries that can be run in virtualized sandboxes as well.
<li><b>Mobile cloud computing</b>. You can clearly access the so-called &#8220;cloud&#8221; from a smart phone, but if smart phones are virtualized, mobile applications can be migrated to a cloud and back seamlessly. This is still a pipe-dream and a few research platforms (<a href="http://research.microsoft.com/en-us/projects/maui/">MAUI</a> and <a href="http://berkeley.intel-research.net/bgchun/clonecloud/">CloneCloud</a>) are proposed to make this a reality. The benefits of doing this are enormous: <b>one can potentially access infinite compute and storage resources on the smart phone</b>.
<li><b>Security</b>. This is probably the strongest argument for mobile virtualization. The popularity of smart phones is making them a prime target for malicious hackers. <a href="http://www.cs.virginia.edu/~robins/Malware_Goes_Mobile.pdf">Malware</a>, <a href="http://www.csmonitor.com/Innovation/Horizons/2010/1111/Cell-phone-virus-attacks-1-million-cell-phone-users">Viruses</a> and other nasty stuff are making their way into smart phones, which currently don&#8217;t have much protection against them. It&#8217;s not easy to run Anti-virus software on a mobile phone, as the current AV software is very resource hungry making it unsuitable for smart phones.
<li><b>Isolation</b>. This is related to security. It will be possible to have different user profiles with different levels of access (say work and home) with mobile virtualization. VMware <a href="http://www.pcworld.com/article/219671/vmware_shows_off_mobile_virtualization_on_android.html">recently demonstrated</a>, how multiple user profiles can co-exist in the same phone at <a href="http://www.mobileworldcongress.com/">Mobile Congress 2011</a>.
<li><b>Ease of development</b>. This is an indirect benefit for mobile phone developers. Virtualization can make the development of mobile applications easier by removing the need for maintaining multiple versions of the same application for different operating systems.
</ol>
<h2>Challenges</h2>
<p>Before you start seeing virtualized mobile phones, there are still plenty of challenges that need to be solved.</p>
<ol>
<li><b>Limited resources</b>. Though, the CPUs on mobile phones are getting more and more powerful, they still have limited battery and storage space. Virtualization usually adds more burden to the resources and is not necessarily energy-aware.
<li><b>Poor connectivity </b>. Mobile cloud computing sounds like a great idea, but mobile phones often experience variable connectivity. It&#8217;s not easy to implement <a href="http://www.cs.cmu.edu/~coda/docdir/jjk-thesis.pdf">disconnected operations</a> for storage and for seamlessly migrating computation.
<li><b>Poor performance</b>. Virtualization adds performance overheads, which are still being researched in server virtualization environments. It&#8217;s not clear whether the overheads are worth the effort on a mobile phone.
</ol>
<p>These challenges can be overcome and it&#8217;s only a matter of time before smart phones are virtualized. Some current players in the market are: <a href="http://www.vmware.com/products/mobile/">VMware&#8217;s mobile virtualizaiton platform (MVP)</a> and <a href="http://www.ok-labs.com/products/okl4-microvisor">OKL4 MicroVisor</a>. OKL4 claims to be the first open source mobile hypervisor, which is an exciting development that can lead to advances in  mobile virtualization.</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fppadala.net%2Fblog%2F2011%2F02%2Fmobivirt-challenges%2F&amp;title=Challenges%20in%20Mobile%20%28Smart%20Phone%29%20Virtualization"><img src="http://ppadala.net/blog/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://ppadala.net/blog/2011/02/mobivirt-challenges/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>How to Access Your Web Server within Your Local Network</title>
		<link>http://ppadala.net/blog/2011/02/howto-webserver-localnet/</link>
		<comments>http://ppadala.net/blog/2011/02/howto-webserver-localnet/#comments</comments>
		<pubDate>Thu, 10 Feb 2011 04:09:00 +0000</pubDate>
		<dc:creator>Pradeep Padala</dc:creator>
				<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://ppadala.net/blog/?p=749</guid>
		<description><![CDATA[If you are hosting a web server at home and using your router&#8217;s port forwarding to redirect requests from WAN port to WebServerHost:80, there&#8217;s an annoying problem in some routers: you cannot access the web server from inside the network. There are multiple reasons why this might happen. The router assumes that all traffic from]]></description>
			<content:encoded><![CDATA[<p>If you are hosting a web server at home and using your router&#8217;s port forwarding to redirect requests from WAN port to WebServerHost:80, there&#8217;s an annoying problem in some routers: <b>you cannot access the web server from inside the network</b>. There are multiple reasons why this might happen.</p>
<ol>
<li>The router assumes that all traffic from internal hosts to port 80 are for the router admin interface. This is annoying, as you just get to the router&#8217;s web admin page. <b>Solution</b>: you can port forward from another port (say 8000) to your WebServer&#8217;s port 80. Now, you can access the website with http://my.site.net:8000. You are out of luck, if your router does&#8217;t allow port forwarding to a different port (say WAN:8000->WebServerHost80 instead of WAN:80->WebServerHost80).
<li>You have two or more routers with different subnets and the routing is messed up. This is a difficult problem to diagnose and often the router&#8217;s admin interfaces are not that amenable to debugging routing problems. I suggest changing your firmware to <a href="http://www.dd-wrt.com">DD-WRT</a>, if you can.
<li>Port forwarding doesn&#8217;t work for incoming traffic from local ports on the router. I think this is probably the most common reason. Without DD-WRT, there&#8217;s no easy way to fix this. <b>Solution</b>: One simple way to solve this is to set a hard-coded DNS entry in <code>/etc/hosts</code> (Linux) or   <code>c:\WINDOWS\system32\drivers\etc</code> (Windows) as follows.
<pre class="brush: bash;">
192.168.x.x        my.site.net
</pre>
<p>192.168.x.x is the internal IP address of the WebServerHost
</ol>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fppadala.net%2Fblog%2F2011%2F02%2Fhowto-webserver-localnet%2F&amp;title=How%20to%20Access%20Your%20Web%20Server%20within%20Your%20Local%20Network"><img src="http://ppadala.net/blog/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://ppadala.net/blog/2011/02/howto-webserver-localnet/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Computer Science Conferences – Statistics and Acceptance Rates</title>
		<link>http://ppadala.net/blog/2011/02/csstats/</link>
		<comments>http://ppadala.net/blog/2011/02/csstats/#comments</comments>
		<pubDate>Wed, 09 Feb 2011 18:03:17 +0000</pubDate>
		<dc:creator>Pradeep Padala</dc:creator>
				<category><![CDATA[Research]]></category>

		<guid isPermaLink="false">http://ppadala.net/blog/?p=743</guid>
		<description><![CDATA[There are a bunch of sites with statistics on computer science conferences, but it always bothered me that there was no central place to search for conference statistics like acceptance rates. I also wanted to have a visual display of statistics similar to Google Finance. In this age of AJAX and Web 2.0, the web]]></description>
			<content:encoded><![CDATA[<p>There are a bunch of sites with statistics on computer science conferences, but it always bothered me that there was no central place to search for conference statistics like acceptance rates. I also wanted to have a visual display of statistics similar to Google Finance. In this age of AJAX and Web 2.0, the web page should also be very fluid.</p>
<p>My first attempt to build such a web page is <a href="http://ppadala.net/conferences">here</a>. Right now, it scrapes the data from <a href="http://www.cs.ucsb.edu/~almeroth/conf/stats/">Kevin Almeroth&#8217;s excellent stats page</a> and presents it in a visual form. The scraping is still a bit rough, so there might be some errors. I would like to add more features like comparing conferences, searching and adding more conferences.</p>
<p>Leave your comments and suggestions below.</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fppadala.net%2Fblog%2F2011%2F02%2Fcsstats%2F&amp;title=Computer%20Science%20Conferences%20%26%238211%3B%20Statistics%20and%20Acceptance%20Rates"><img src="http://ppadala.net/blog/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://ppadala.net/blog/2011/02/csstats/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Best Resources to Learn about Linux Kernel Internals</title>
		<link>http://ppadala.net/blog/2011/02/learn-kernel-internals/</link>
		<comments>http://ppadala.net/blog/2011/02/learn-kernel-internals/#comments</comments>
		<pubDate>Mon, 07 Feb 2011 18:45:10 +0000</pubDate>
		<dc:creator>Pradeep Padala</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://ppadala.net/blog/?p=731</guid>
		<description><![CDATA[The Source The best resource is the kernel source. I prefer reading the cross-referenced lxr, which makes it easy to follow the code. Linux Networking Subsystem: Desktop Companion to the Linux Source Code. A commentary Linux networking code. The Linux Kernel &#038; the File System Subsystem : An Architectural Overview. Talks about VFS in the]]></description>
			<content:encoded><![CDATA[<h2>The Source</h2>
<p>The best resource is the kernel source.</p>
<ul>
<li>I prefer reading the cross-referenced <a href="http://lxr.linux.no/linux/">lxr</a>, which makes it easy to follow the code.
<li><a href="http://www.ecsl.cs.sunysb.edu/elibrary/linux/network/net.pdf">Linux Networking Subsystem: Desktop Companion to the Linux Source Code</a>. A commentary Linux networking code.
<li><a href="linuxindore.com/downloads/download/data-structures/linux-fs">The Linux Kernel &#038; the File System Subsystem</a> : An Architectural Overview. Talks about VFS in the Linux.
<li><a href="http://www.csn.ul.ie/~mel/projects/vm/guide/html/code">Code Commentary On The Linux Virtual Memory Manager</a> by Mel Gorman.</li>
</ul>
<h2>Books</h2>
<p>Obviously, it&#8217;s not that easy to dive into thousands of lines of code. I suggest starting with reading the books explaining Linux kernel in general.</p>
<ul>
<li><a href="http://oreilly.com/catalog/9780596000028">Understanding Linux Kernel</a>. This is one of the first books to provide in-depth explanations. Vastly improved over multiple editions, the current one is a very good read.</li>
<li><a href="http://blog.rlove.org/2010/07/linux-kernel-development-third-edition.html">Robert Loves&#8217; book</a>. Love is a core developer, who implemented pre-emptive kernel and other features. I haven&#8217;t personally read this, but I have seen good reviews of this.</li>
<li>If you are specifically looking for networking aspects, this is an excellent <a href="http://oreilly.com/catalog/9780596002558/">book on understanding linux networking internals</a>.</li>
<li> For device drivers, similarly, <a href="http://oreilly.com/catalog/9780596005900/">this book</a> is very useful.</li>
</ul>
<h2>Other resources</h2>
<ul>
<li><a href="http://lwn.net/Kernel/Index/">LWN&#8217;s kernel page</a> has lots of great articles explaining kernel internals</li>
<li><a href="http://tldp.org/LDP/tlk/tlk.html">TLDP&#8217;s TLK</a>. Somewhat outdated, but useful.</li>
<li>Linux Journal&#8217;s KernelKorner has some excellent articles, most of which are freely available online.</li>
<li><a href="http://www.tldp.org/LDP/khg/HyperNews/get/khg.html">The Linux Kernel Hackers&#8217; Guide</a>, compiled by Michael K. Johnson of <a href="http://www.redhat.com/">Red Hat</a> fame. Includes among other<br />
documents selected Q/A&#8217;s from the linux-kernel mailing list.</li>
</ul>
<h2>HOWTOs</h2>
<ul>
<li> <a href="http://www.tldp.org/HOWTO/Kernel-HOWTO.html">The LinuxKernel HOWTO</a> by Brian Ward.</li>
<li> A completely new Kernelhacking-HOWTO at <a href="http://www.kernelhacking.org/">http://www.kernelhacking.org/</a>.</li>
<li> Various Kernel <a href="http://www.tldp.org/HOWTO/HOWTO-INDEX/os.html#OSKERNEL">HOWTOs</a> on specific questions, such as the <a href="http://www.tldp.org/HOWTO/mini/BogoMips.html">BogoMips mini-HOWTO</a> by Wim van Dorst. </li>
<li> Various Linux <a href="http://www.tldp.org/HOWTO/HOWTO-INDEX/index.html">HOWTOs</a> at <a href="http://www.tldp.org">TLDP</a></li>
</ul>
<h2>Lists of links</h2>
<ul>
<li>There&#8217;s a huge index of links at <a href="http://jungla.dit.upm.es/~jmseyas/linux/kernel/hackers-docs.html">http://jungla.dit.upm.es/~jmseyas/linux/kernel/hackers-docs.html</a> that has links to many resources.</li>
<li>Another <a href="http://cs.uml.edu/~cgould/">list</a> of links maintained by Chris Gould. Mostly unsorted</li>
</ul>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fppadala.net%2Fblog%2F2011%2F02%2Flearn-kernel-internals%2F&amp;title=Best%20Resources%20to%20Learn%20about%20Linux%20Kernel%20Internals"><img src="http://ppadala.net/blog/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://ppadala.net/blog/2011/02/learn-kernel-internals/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Virtualization Bibliography</title>
		<link>http://ppadala.net/blog/2011/02/virtbib/</link>
		<comments>http://ppadala.net/blog/2011/02/virtbib/#comments</comments>
		<pubDate>Wed, 02 Feb 2011 22:56:42 +0000</pubDate>
		<dc:creator>Pradeep Padala</dc:creator>
				<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[Research]]></category>
		<category><![CDATA[Virtualization]]></category>
		<category><![CDATA[Bibliography]]></category>

		<guid isPermaLink="false">http://ppadala.net/blog/?p=642</guid>
		<description><![CDATA[Virtualization is a hot topic and the field is growing at a rapid pace. There are hundreds of papers on each sub-topic, and this list is intended to be a good starting point for someone starting in virtualization research. Surveys/Books These are good starting points, if you are just learning about virtualization Survey of virtualization]]></description>
			<content:encoded><![CDATA[<p>Virtualization is a hot topic and the field is growing at a rapid pace. There are hundreds of papers on each sub-topic, and this list is intended to be a good starting point for someone starting in virtualization research.</p>
<h2>Surveys/Books</h2>
<p>These are good starting points, if you are just learning about virtualization</p>
<ol>
<li><em>Survey of virtualization machine research</em>. Robert P. Goldberg. IEEE Computer, June 1974, pp 34-45. <a href="http://cseweb.ucsd.edu/classes/wi08/cse221/papers/goldberg74.pdf">[PDF]</a>. One of the oldest surveys about virtualization research.</li>
<li><em>A Survey on Virtualization Techniques</em>. Susanta Nanda and Tzi-cker Chiueh <a href="http://www.ecsl.cs.sunysb.edu/tr/TR179.pdf">[PDF]</a>. A more modern survey of virtualization techniques. The paper lists many of the techniques, but doesn&#8217;t really explain how they are different etc. Yet, this is a good read for budding virtualization researchers.</li>
<li><em>Virtual Machines: Versatile Platforms for Systems and Processes</em> . Jim Smith Ravi Nair. <a href="http://www.amazon.com/Virtual-Machines-Versatile-Platforms-Architecture/dp/1558609105">Amazon book link</a></li>
</ol>
<h2>Virtualization Overview</h2>
<p>These are the papers that will help in understanding fundamentals and concepts of virtualization.</p>
<ol>
<li><em>Xen and the art of virtualization</em>. Barham et.al. This is the classic SOSP paper on para-virtualization. <a href="http://www.cl.cam.ac.uk/research/srg/netos/papers/2003-xensosp.pdf">[PDF]</a>.</li>
<li><em>When Virtual is Better Than Real. Peter Chen and Brian Noble</em>. This is a great short article explaining the benefits of virtualization. <a href="http://portal.acm.org/citation.cfm?id=876409">ACM link</a>.</li>
<li>Disco: Running Commodity Operating Systems on Scalable Multiprocessors. E. Bugnion, S. Devine, and M. Rosenblum. This paper is considered to be the first paper that revived the virtualization concepts pioneered by IBM. <a href="http://portal.acm.org/citation.cfm?id=265930">ACM link</a>.</li>
<li>Running multiple operating systems concurrently on an IA32 PC using virtualization techniques. Kevin Lawton. This is a great article on the difficulties involved in virtualizing the x86 platform. <a href="http://www.ece.cmu.edu/~ece845/docs/plex86.txt">link</a>.</li>
<li>Formal requirements for virtualizable third generation architectures. Popek and Goldberg. The classic paper explaining the requirements for virtualizing a specific ISA. <a href="http://portal.acm.org/citation.cfm?id=361073">ACM link</a>. If you want light reading, check the <a href="http://en.wikipedia.org/wiki/Popek_and_Goldberg_virtualization_requirements">Wikipedia explanation of the requirements</a>.</li>
<li>Scale and Performance in the Denali Isolation Kernel. Andrew Whitaker, Marianne Shaw, and Steven D. Gribble. Denali is another example of early virtualization papers that rejuvenated the research. Denali shows the containers (or vservers) concept, which is used in OpenVZ, KVM and VServers.</li>
<li>The Exokernel Operating System Architecture. Dawson Engler&#8217;s thesis. <a href="http://pdos.csail.mit.edu/exo/theses/engler/thesis.ps">[PS]</a>. This is more of OS research, but a great read for understanding some of the techniques (thin hypervisor, pass through etc.) that are used in modern virtualized systems.</li>
</ol>
<h2>CPU Virtualization</h2>
<p>Virtualization of CPU is provided by a CPU scheduler that provides the illusion of multiple CPUs (or VCPUs). Scheduling has a long and rich history. Below are a few links in relation to virtualization.</p>
<ol>
<li><a href="http://wiki.xensource.com/xenwiki/CreditScheduler">Xen&#8217;s credit scheduler</a>. Xen&#8217;s credit scheduler is a proportional fair scheduler, which is pretty big improvement (especially in SMP environments) over the <a href="http://wiki.xensource.com/xenwiki/Scheduling">old SEDF scheduler.</a></li>
<li> Xen&#8217;s scheduler is partly inspired by Carl Waldspurger&#8217;s lottery scheduling and the paper: Lottery Scheduling: Flexible Proportional-Share Resource Management by Carl Waldspurger is a must read. <a href="http://www.usenix.org/publications/library/proceedings/osdi/full_papers/waldspurger.pdf">[PDF]</a>.</li>
<li> Comparison of the Three CPU Schedulers in Xen &#8211; Ludmila Cherkasova, Diwaker Gupta, Amin Vahdat &#8211; Perfomance Evaluation Review. Vol 35, Number 2. Sept 3, 2007. This provides a great comparison of CPU schedulers and provides insight on how handling I/O is complicated. <a href="http://www.sysnet.ucsd.edu/~dgupta/papers/per07-3sched-xen.pdf">[PDF]</a>.</li>
</ol>
<h2>Network Virtualization</h2>
<p>Network virtualization is gaining momentum in recent years. I would just point you to the following survey as a starting point.</p>
<ol>
<li><em>Survey of network virtualization</em>. N.M. Mosharaf Kabir Chowdhury and Raouf Boutaba. <a href="https://www.cs.uwaterloo.ca/research/tr/2008/CS-2008-25.pdf">[PDF]</a>. This is pretty comprehensive and well-written survey on network virtualization. <a href="http://www.mosharaf.com">Mosharaf </a>also has a nice <a href="http://www.mosharaf.com/network-virtualization/bibliography/">network virtualization</a>, listing lots of useful papers.</li>
</ol>
<h2>Device Virtualization</h2>
<ol>
<li><a href="http://wiki.xensource.com/xenwiki/XenSplitDrivers">Xen&#8217;s device driver virtualization</a>.</li>
<li>Virtualizing I/O Devices on VMware Workstation&#8217;s Hosted Virtual Machine Monitor. Jeremy Sugerman, Ganesh Venkitachalam, and Beng-Hong Lim. As the name suggests, this paper explains VMware Workstation&#8217;s mechanisms for virtualizing devices. <a href="http://www.usenix.org/event/usenix01/sugerman/sugerman.pdf">[PDF]</a>.</li>
<li>GPU Virtualization on VMware&#8217;s Hosted I/O Architecture. Micah Dowty, Jeremy Sugerman. This paper by VMware folks explains how VMware implements GPU virtualization. Great starting point for GPU virtualization. <a href="http://www.usenix.org/event/wiov08/tech/full_papers/dowty/dowty.pdf">[PDF]. Andres&#8217; paper on </a><a href="http://www.lagarcavilla.org/publications/LagarCavillaVEE07.pdf">VMM indepedent graphics acceleration</a> is a good follow-up reading.</li>
</ol>
<h2>Memory Virtualization</h2>
<ol>
<li>Memory Resource Management in VMware ESX Server. Carl A. Waldspurger. <a href="http://www.waldspurger.org/carl/papers/esx-mem-osdi02.pdf">[PDF]</a>. Classic paper on memory virtualization. This paper introduces memory ballooning, which is a great technique used in commercial platforms as well.</li>
<li>Difference engine: harnessing memory redundancy in virtual machines. Diwakar Gupta et.al. <a href="http://cseweb.ucsd.edu/~dgupta/papers/osdi08-de.pdf">[PDF]</a>. A great follow up paper that talks about sharing memory across VMs. Incidentally, both these papers have received best paper awards.</li>
</ol>
<h2>Migration/Cloning</h2>
<ol>
<li>Live Migration of Virtual Machines. Clark et.al. One of the first academic papers discussing how to do live migration, which is implemented in Xen. VMware has supposedly implemented vmotion before this was published. <a href="http://www.usenix.org/event/nsdi05/tech/full_papers/clark/clark.pdf">[PDF]</a></li>
<li>The design and implementation of Zap: a system for migrating computing environments. Osman et.al. Zap predates Xen paper and talks about sandboxing processes that can be migrated. This is more like container virtualization rather than full system virtualization. <a href="http://portal.acm.org/citation.cfm?id=844162">ACM link</a></li>
<li>SnowFlock: rapid virtual machine cloning for cloud computing. Andres Lagar-Cavilla et.al. Greatp paper to read to understanding cloning of virtual machines. <a href="http://sysweb.cs.toronto.edu/snowflock?type=Publications">Snowflock link</a>.</li>
</ol>
<h2>Resource Management/Automation</h2>
<ol>
<li> Carl Waldspurger&#8217;s PhD thesis is a great place to start for understanding resource management. <a href="http://bit.ly/esra48">MIT link</a>.</li>
<li>Automated control of multiple virtualized resources. Padala et.al. Disclaimer: this is my own paper <img src='http://ppadala.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  It&#8217;s a good place to start if you want to learn about automating resource management for virtual machines. The control theory aspects are a bit complex, but you can ignore them and focus on the issues in automating resource management. <a href="http://ppadala.net/research/dyncontrol/eurosys09.pdf">[PDF]</a>.</li>
<li>Black-box and Gray-box Strategies for Virtual Machine Migration. Clark et.al. This is a follow up for live migration paper. The paper talks about strategies for automating the migration of VMs to meet specific goals. <a href="http://www.usenix.org/event/nsdi07/tech/wood.html">USENIX link</a>.</li>
</ol>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fppadala.net%2Fblog%2F2011%2F02%2Fvirtbib%2F&amp;title=Virtualization%20Bibliography"><img src="http://ppadala.net/blog/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://ppadala.net/blog/2011/02/virtbib/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>How to Convert PowerPoint Images to PDF</title>
		<link>http://ppadala.net/blog/2011/01/how-to-convert-powerpoint-images-to-pdf/</link>
		<comments>http://ppadala.net/blog/2011/01/how-to-convert-powerpoint-images-to-pdf/#comments</comments>
		<pubDate>Thu, 13 Jan 2011 23:24:41 +0000</pubDate>
		<dc:creator>Pradeep Padala</dc:creator>
				<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://ppadala.net/blog/?p=651</guid>
		<description><![CDATA[I am doing this a lot more often these days, want to convert the pretty images I created with PowerPoint into PDF, so that they are more amenable to Latex/PdfLatex. For fun, I prepared an illustrated HOWTO. Here you go, should be easy to follow. Let&#8217;s say you have a slide with following picture. First,]]></description>
			<content:encoded><![CDATA[<p>I am doing this a lot more often these days, want to convert the pretty images I created with PowerPoint into PDF, so that they are more amenable to Latex/PdfLatex. For fun, I prepared an illustrated HOWTO. Here you go, should be easy to follow.</p>
<p>Let&#8217;s say you have a slide with following picture.</p>
<p><a href="http://ppadala.net/blog/wp-content/uploads/2011/01/img1.png"><img src="http://ppadala.net/blog/wp-content/uploads/2011/01/img1.png" alt="Presentation slide with an image" title="img1" width="484" height="400" class="aligncenter size-full wp-image-653" /></a></p>
<p>First, you want to save the slide as PDF.<br />
<a href="http://ppadala.net/blog/wp-content/uploads/2011/01/img2.png"><img src="http://ppadala.net/blog/wp-content/uploads/2011/01/img2.png" alt="" title="img2" width="484" height="400" class="aligncenter size-full wp-image-654" /></a></p>
<p>Don&#8217;t save it yet. Choose options to make sure that you are selecting only one slide.<br />
<a href="http://ppadala.net/blog/wp-content/uploads/2011/01/img3.png"><img src="http://ppadala.net/blog/wp-content/uploads/2011/01/img3.png" alt="" title="img3" width="484" height="400" class="aligncenter size-full wp-image-655" /></a></p>
<p>As soon as you save it, Adobe Acrobat will open it. You may want to remove all the extra white space around it. To crop the image, you will need the Acrobat Writer (Reader is not enough to do the following task). Choose the crop tool, as shown below.<br />
<a href="http://ppadala.net/blog/wp-content/uploads/2011/01/img4.png"><img src="http://ppadala.net/blog/wp-content/uploads/2011/01/img4.png" alt="" title="img4" width="484" height="400" class="aligncenter size-full wp-image-656" /></a></p>
<p>Choose the region you want to crop, and double click inside the region. You will see a dialog similar to the one shown below.<br />
<a href="http://ppadala.net/blog/wp-content/uploads/2011/01/img5.png"><img src="http://ppadala.net/blog/wp-content/uploads/2011/01/img5.png" alt="" title="img5" width="484" height="400" class="aligncenter size-full wp-image-652" /></a></p>
<p>Press ok, and you are done.<br />
<a href="http://ppadala.net/blog/wp-content/uploads/2011/01/img6.png"><img src="http://ppadala.net/blog/wp-content/uploads/2011/01/img6.png" alt="" title="img6" width="484" height="400" class="aligncenter size-full wp-image-663" /></a></p>
<p>Have fun!</p>
<p>P.S. On Mac, you don&#8217;t have any hassle. Just select the region you want to put in image. Right click and save as picture (choose PDF as the file format).</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fppadala.net%2Fblog%2F2011%2F01%2Fhow-to-convert-powerpoint-images-to-pdf%2F&amp;title=How%20to%20Convert%20PowerPoint%20Images%20to%20PDF"><img src="http://ppadala.net/blog/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://ppadala.net/blog/2011/01/how-to-convert-powerpoint-images-to-pdf/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>2011 Resolutions</title>
		<link>http://ppadala.net/blog/2011/01/2011-resolutions/</link>
		<comments>http://ppadala.net/blog/2011/01/2011-resolutions/#comments</comments>
		<pubDate>Fri, 07 Jan 2011 07:32:45 +0000</pubDate>
		<dc:creator>Pradeep Padala</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[2011]]></category>
		<category><![CDATA[Resolutions]]></category>

		<guid isPermaLink="false">http://ppadala.net/blog/?p=630</guid>
		<description><![CDATA[I wanted to write a detailed post about how 2010 went, but it seems like my 2011 is already in full swing. 2010 was amazing and one of the best years in my career. Highlights include my best paper award and the GENI high profile demo. I also started running and lost about 5 kilos.]]></description>
			<content:encoded><![CDATA[<p>I wanted to write a detailed post about how 2010 went, but it seems like my 2011 is already in full swing. 2010 was amazing and one of the best years in my career. Highlights include my <a href="http://ppadala.net/research/LiteGreen/"> best paper award</a> and the <a href="http://ppadala.net/research/GENI-VIOLIN/">GENI high profile demo</a>. I also started running and lost about 5 kilos.</p>
<p>So, what&#8217;s in store for 2011? </p>
<ol>
<li><strong>Focus</strong>. I worked on a lot of different things in 2010, but in 2011, I hope to focus on one specific project (yet to see the light of publication) and pool all my resources into it. </li>
<li><strong>Writing</strong>. I have a ton of back log on writing research publications and blogging. Hope to change that this year. Not sure, if I can get to blog more often. I really enjoy writing the HOWTOs (<a href="http://ppadala.net/blog/2010/09/how-to-setup-xen4-pvops-2-6-32-x-on-centos-5-5/">1</a>, <a href="http://ppadala.net/blog/2010/09/how-to-setup-xen4-and-pvops-2-6-32-x-on-centos-5-5-using-gitco-repository/">2</a>) that seem to get a lot of hits. Hope to do more of those.</li>
<li><strong>Running</strong>. I probably ran about 250-300 miles this year (started in May and skipped two months in between), which is ok, but not great. My goal in 2011 is to run at least 700 miles and hope to lose 5-10 kilos. Will try more difficult terrains like <a href="http://running.stanford.edu/Runs/Dish.htm">dish run</a>.
</ol>
<p>That&#8217;s it! Happy New Year!</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fppadala.net%2Fblog%2F2011%2F01%2F2011-resolutions%2F&amp;title=2011%20Resolutions"><img src="http://ppadala.net/blog/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://ppadala.net/blog/2011/01/2011-resolutions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Build Custom Xen Kernel Based on CentOS/RHEL Xen Kernel</title>
		<link>http://ppadala.net/blog/2010/10/how-to-build-your-xen-kernel-based-on-centosrhel-xen-kernel/</link>
		<comments>http://ppadala.net/blog/2010/10/how-to-build-your-xen-kernel-based-on-centosrhel-xen-kernel/#comments</comments>
		<pubDate>Fri, 01 Oct 2010 23:26:09 +0000</pubDate>
		<dc:creator>Pradeep Padala</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://ppadala.net/blog/?p=610</guid>
		<description><![CDATA[The HOWTO on compiling CentOS kernel based on RHEL code base (currently 2.6.18) is overly complicated. Follow the following steps to build a custom Xen kernel, maybe with different kernel configuration. Setup the rpmbuild directory, and install prerequisite packages. mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS} sudo yum -y install rpm-build redhat-rpm-config unifdef kernel-devel kernel-xen-devel Grab the kernel source]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://wiki.centos.org/HowTos/Custom_Kernel">HOWTO</a> on compiling CentOS kernel based on RHEL code base (currently 2.6.18) is overly complicated. Follow the following steps to build a custom Xen kernel, maybe with different kernel configuration.</p>
<ul>
<li> Setup the rpmbuild directory, and install prerequisite packages.
<pre class="brush: bash;">
mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
sudo yum -y install rpm-build redhat-rpm-config unifdef kernel-devel kernel-xen-devel
</pre>
<li>Grab the kernel source RPM, you want to modify and compile, and install it.
<pre class="brush: bash;">
wget -c http://mirrors.kernel.org/centos/5/updates/SRPMS/kernel-`uname -r`.src.rpm
rpm -i kernel-`uname -r`.src.rpm
</pre>
<li>Create the spec file for the downloaded kernel
<pre class="brush: bash;">
 cd ~/rpmbuild/SPECS
 rpmbuild -bp --target=`uname -m` kernel-2.6.spec
</pre>
<li>Modify the config to your needs. The config file are stored in <code>~/rpmbuild/SOURCES</code>.
<li>Modify the buildid. This is a good practice, if you are making extensive changes.
<pre class="brush: bash;">
 cd ~/rpmbuild/SPECS
 sed -ibak -e 's/#% define buildid/%define buildid .ppadala/' kernel-2.6.spec
</pre>
<li>Build the kernel
<pre class="brush: bash;">
 cd ~/rpmbuild/SPECS
 sudo rpmbuild -bb --with xenonly --without debug --without debuginfo --target=`uname -m` kernel-2.6.spec
</pre>
<li>This will generate a RPM that you can install on other machines as well.
</ul>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fppadala.net%2Fblog%2F2010%2F10%2Fhow-to-build-your-xen-kernel-based-on-centosrhel-xen-kernel%2F&amp;title=How%20to%20Build%20Custom%20Xen%20Kernel%20Based%20on%20CentOS%2FRHEL%20Xen%20Kernel"><img src="http://ppadala.net/blog/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://ppadala.net/blog/2010/10/how-to-build-your-xen-kernel-based-on-centosrhel-xen-kernel/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Using kpartx to Mount VM Disk Images</title>
		<link>http://ppadala.net/blog/2010/09/kpartx-to-mount-vm-disk-images/</link>
		<comments>http://ppadala.net/blog/2010/09/kpartx-to-mount-vm-disk-images/#comments</comments>
		<pubDate>Wed, 29 Sep 2010 18:20:44 +0000</pubDate>
		<dc:creator>Pradeep Padala</dc:creator>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[Xen]]></category>
		<category><![CDATA[Kpartx]]></category>

		<guid isPermaLink="false">http://ppadala.net/blog/?p=599</guid>
		<description><![CDATA[If you are using a full disk image for your VM, instead of using a file system, you cannot simply mount it directly using mount -o loop d0.img Use the following commands to see the partitions in your disk, and then mount them. # kpartx -av d0.img add map loop0p1 : 0 29333504 linear /dev/loop0]]></description>
			<content:encoded><![CDATA[<p>If you are using a full disk image for your VM, instead of using a file system, you cannot simply mount it directly using </p>
<pre class="brush: bash;">mount -o loop d0.img</pre>
<p>Use the following commands to see the partitions in your disk, and then mount them.</p>
<pre class="brush: bash;">
# kpartx -av d0.img
add map loop0p1 : 0 29333504 linear /dev/loop0 2048
add map loop0p5 : 0 1380352 linear /dev/loop0 29337600
# mount /dev/mapper/loop0p1 /mnt
# ls /mnt
bin   cdrom  etc   initrd.img      lib         media  opt   root  selinux  sys  usr  vmlinuz
boot  dev    home  initrd.img.old  lost+found  mnt    proc  sbin  srv      tmp  var
# unmount /mnt
# kpartx -d d0.img
</pre>
<p>The last two commands are to unmount and delete the partition mappings.</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fppadala.net%2Fblog%2F2010%2F09%2Fkpartx-to-mount-vm-disk-images%2F&amp;title=Using%20kpartx%20to%20Mount%20VM%20Disk%20Images"><img src="http://ppadala.net/blog/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://ppadala.net/blog/2010/09/kpartx-to-mount-vm-disk-images/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>How to Setup Xen4 and pvops 2.6.32.x on CentOS 5.5 using GITCO repository</title>
		<link>http://ppadala.net/blog/2010/09/how-to-setup-xen4-and-pvops-2-6-32-x-on-centos-5-5-using-gitco-repository/</link>
		<comments>http://ppadala.net/blog/2010/09/how-to-setup-xen4-and-pvops-2-6-32-x-on-centos-5-5-using-gitco-repository/#comments</comments>
		<pubDate>Tue, 28 Sep 2010 17:53:24 +0000</pubDate>
		<dc:creator>Pradeep Padala</dc:creator>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[Virtualization]]></category>
		<category><![CDATA[Xen]]></category>
		<category><![CDATA[CentOS]]></category>
		<category><![CDATA[GITCO]]></category>
		<category><![CDATA[Xen4]]></category>

		<guid isPermaLink="false">http://ppadala.net/blog/?p=562</guid>
		<description><![CDATA[See my howto on setting up Xen4 + pvops 2.6.32.x first before following this. Do steps 1, 2 and 3 described in the howto Install Xen 4.0.1 from GITCO repository. The benefit of this is that all the required packages, Xen enabled Linux kernel (2.6.18) and libvirt are correctly installed and setup wget http://www.gitco.de/repo/GITCO-XEN4.0.1_testing_x86_64.repo yum]]></description>
			<content:encoded><![CDATA[<p>See my <a href="http://ppadala.net/blog/2010/09/how-to-setup-xen4-pvops-2-6-32-x-on-centos-5-5/">howto on setting up Xen4 + pvops 2.6.32.x</a> first before following this.</p>
<ol>
<li>Do steps 1, 2 and 3 described in the <a href="http://ppadala.net/blog/2010/09/how-to-setup-xen4-pvops-2-6-32-x-on-centos-5-5/">howto</a>
<li> Install Xen 4.0.1 from GITCO repository. The benefit of this is that all the required packages,<br />
   Xen enabled Linux kernel (2.6.18) and libvirt are correctly installed and setup</p>
<pre class="brush: bash;">
wget http://www.gitco.de/repo/GITCO-XEN4.0.1_testing_x86_64.repo
yum -y install xen
</pre>
<li> Get pvops kernel
<pre class="brush: bash;">
git clone git://git.kernel.org/pub/scm/linux/kernel/git/jeremy/xen.git linux-2.6-xen
cd linux-2.6-xen
git checkout -b xen/stable-2.6.32.x origin/xen/stable-2.6.32.x
</pre>
<li>Build the kernel to match your configuration
<pre class="brush: bash;">make menuconfig </pre>
</ol>
<p>Follow the remaining steps in the <a href="http://ppadala.net/blog/2010/09/how-to-setup-xen4-pvops-2-6-32-x-on-centos-5-5/">howto</a> to setup grub, and test it.</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fppadala.net%2Fblog%2F2010%2F09%2Fhow-to-setup-xen4-and-pvops-2-6-32-x-on-centos-5-5-using-gitco-repository%2F&amp;title=How%20to%20Setup%20Xen4%20and%20pvops%202.6.32.x%20on%20CentOS%205.5%20using%20GITCO%20repository"><img src="http://ppadala.net/blog/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://ppadala.net/blog/2010/09/how-to-setup-xen4-and-pvops-2-6-32-x-on-centos-5-5-using-gitco-repository/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
	</channel>
</rss>
