<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
 
 <title>Mike Staszel</title>
 <link href="http://mikestaszel.com/atom.xml" rel="self"/>
 <link href="http://mikestaszel.com"/>
 <updated>2013-01-31T02:56:47+00:00</updated>
 <id>http://mikestaszel.com</id>
 <author>
   <name>Mike Staszel</name>
   <email>mikestaszel@gmail.com</email>
 </author>

 
 <entry>
   <title>Summer's Over</title>
   <link href="http://mikestaszel.com/2012/08/27/summers-over"/>
   <updated>2012-08-27T00:00:00+00:00</updated>
   <id>http://mikestaszel.com/2012/08/27/summers-over</id>
   <content type="html">&lt;p&gt;Now that summer is over and school is back in session, I&amp;#8217;ll be posting less and working more on schoolwork. I&amp;#8217;m learning C++, C, MIPS Assembly, and Verilog in courses this semester and a lot more outside of class.&lt;/p&gt;

&lt;p&gt;Working at SimpleRelevance was awesome and was a great experience! I&amp;#8217;m going to miss the team and 1871, but I hope to be back at some point - but if not, it was everything I could have asked for, and more.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Celery, Redis, and RabbitMQ</title>
   <link href="http://mikestaszel.com/2012/07/15/celery-redis-and-rabbitmq"/>
   <updated>2012-07-15T00:00:00+00:00</updated>
   <id>http://mikestaszel.com/2012/07/15/celery-redis-and-rabbitmq</id>
   <content type="html">&lt;p&gt;This summer I&amp;#8217;ve been developing and hacking away at &lt;a href='http://simplerelevance.com'&gt;SimpleRelevance&lt;/a&gt;, in &amp;#8220;Research and Development&amp;#8221;. SimpleRelevance is a recommendation system that&amp;#8217;s really easy to set up and use. At it&amp;#8217;s core, it pairs customers with products or services they&amp;#8217;d like, and makes it easy for online stores or marketers to use that data.&lt;/p&gt;

&lt;p&gt;This kind of personalization involves plenty of calculations and mathemagical calculations. We use &lt;a href='http://celery.github.com/celery/index.html'&gt;Celery&lt;/a&gt; to distribute these tasks to several worker boxes.&lt;/p&gt;

&lt;p&gt;We&amp;#8217;ve used &lt;a href='http://www.rabbitmq.com/'&gt;RabbitMQ&lt;/a&gt; in the past to queue up these tasks and serve them to the Celery &amp;#8220;workers&amp;#8221;, which then returned the results.&lt;/p&gt;

&lt;p&gt;However, we decided to switch to &lt;a href='http://redis.io/'&gt;Redis&lt;/a&gt; after reading all about it and how it would speed up our infrastructure immensely.&lt;/p&gt;

&lt;p&gt;RabbitMQ is huge, takes up a lot of RAM, takes forever to push tasks (more on this later), and is just&amp;#8230;well, big. Redis is a simpler system that integrates caching and is extremely fast and much more lightweight than RabbitMQ.&lt;/p&gt;

&lt;p&gt;Redis as a Celery broker distributed tasks extremely quickly and got the results back and even cached them nicely for us. Operations that would take 10 seconds with a RabbitMQ backend now took 1 second. RabbitMQ as a Celery broker distributed tasks a little bit slower and gets results back a little bit slower.&lt;/p&gt;

&lt;p&gt;The obvious choice at this point would be to use Redis and get it over with, right?&lt;/p&gt;

&lt;p&gt;Well, queuing up 500,000+ tasks on Redis degraded its performance immensely. RAM usage was still fine and the CPU wasn&amp;#8217;t doing much work, but tasks just took much longer to get out and return - that same 1 second single task took 30 seconds when there were 500,000 other identical tasks sitting in the queue.&lt;/p&gt;

&lt;p&gt;RabbitMQ was indifferent when we threw hundreds of thousands of tasks on it and performance was just the same as if we only gave it 10 tasks.&lt;/p&gt;

&lt;p&gt;So we&amp;#8217;re left with a problem - running 10 tasks on Redis is extremely fast, but running 500,000 tasks is extremely slow. Running 10 tasks with RabbitMQ yields okay performance, and running 500,000 tasks on it yields okay performance.&lt;/p&gt;

&lt;p&gt;So right now, I&amp;#8217;m still looking for other options or for a way to combine the two - we&amp;#8217;ll figure it out.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Hello World!</title>
   <link href="http://mikestaszel.com/2012/06/09/hello-world"/>
   <updated>2012-06-09T00:00:00+00:00</updated>
   <id>http://mikestaszel.com/2012/06/09/hello-world</id>
   <content type="html">&lt;p&gt;Hello - I&amp;#8217;m Mike Staszel, a CS student at &lt;a href='http://illinois.edu'&gt;UIUC&lt;/a&gt; and a Linux developer, most notably known for being the founder of &lt;a href='http://archlinuxarm.org'&gt;Arch Linux ARM&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Right now I&amp;#8217;m working at &lt;a href='http://simplerelevance.com'&gt;SimpleRelevance&lt;/a&gt; - doing everything that falls into the broad category of Research and Development to build the next big thing.&lt;/p&gt;

&lt;p&gt;This blog is the easiest-to-use blog I could have possibly imagined - using &lt;a href='http://jekyllbootstrap.com'&gt;Jekyll Bootstrap&lt;/a&gt; and a neat auto-updating Git setup that generates HTML for posts from Markdown files when I run &lt;code&gt;git push&lt;/code&gt;. I&amp;#8217;ll briefly talk about it in a future post.&lt;/p&gt;</content>
 </entry>
 
 
</feed>