<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	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/"
	>

<channel>
	<title>RedBrain @ $HOME : ~ $ &#187; memory</title>
	<atom:link href="http://redbrain.co.uk/index.php/tag/memory/feed/" rel="self" type="application/rss+xml" />
	<link>http://redbrain.co.uk</link>
	<description>Frustrated Software Developer</description>
	<lastBuildDate>Wed, 16 Nov 2011 17:36:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Update &#8211; Interpreter CRULES &amp; Jamedo</title>
		<link>http://redbrain.co.uk/index.php/update/update-interpreter-crules-jamedo/</link>
		<comments>http://redbrain.co.uk/index.php/update/update-interpreter-crules-jamedo/#comments</comments>
		<pubDate>Mon, 27 Jul 2009 23:51:42 +0000</pubDate>
		<dc:creator>redbrain</dc:creator>
				<category><![CDATA[Crules]]></category>
		<category><![CDATA[Update!]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[BLUG]]></category>
		<category><![CDATA[memory]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://redbrain.co.uk/?p=400</guid>
		<description><![CDATA[<p></p>
<p style="margin-bottom: 0cm;" align="justify">So hey, its been a little longer than i intended to update my blog! But i&#8217;ve been busy, so i have got rid of my personal work being on repositories all over the show. So I have made:</p>

http://code.redbrain.co.uk

<p style="margin-bottom: 0cm;" align="justify">There will be public git access soon, but you can download the [...]]]></description>
			<content:encoded><![CDATA[<p><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } 		A:link { so-language: zxx } --></p>
<p style="margin-bottom: 0cm;" align="justify"><span style="font-family: Arial,sans-serif;">So hey, its been a little longer than i intended to update my blog! But i&#8217;ve been busy, so i have got rid of my personal work being on repositories all over the show. So I have made:</span></p>
<ul>
<li><span style="font-family: Arial,sans-serif;"><a href="http://code.redbrain.co.uk/">http://code.redbrain.co.uk</a></span></li>
</ul>
<p style="margin-bottom: 0cm;" align="justify"><span style="font-family: Arial,sans-serif;">There will be public git access soon, but you can download the snapshot tarballs of the branches. And I have a wiki too there isn&#8217;t anything on there yet but it will give me room to stop putting long tutorial article&#8217;s as pages on my blog to proper wiki article&#8217;s:</span></p>
<ul>
<li><span style="font-family: Arial,sans-serif;"><a href="http://wiki.redbrain.co.uk/">http://wiki.redbrain.co.uk</a></span></li>
</ul>
<p><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } 		A:link { so-language: zxx } --></p>
<p style="margin-bottom: 0cm;" align="justify"><span style="font-family: Arial,sans-serif;">So Compilers, Interpreters and programming languages are my interests&#8230; *yawn! So let me show you my interpreter pipeline for my interpreted language &#8216;CRULES&#8217;: </span></p>
<div id="attachment_401" class="wp-caption alignleft" style="width: 310px"><a rel="attachment wp-att-401" href="http://redbrain.co.uk/?attachment_id=401"><img class="size-medium wp-image-401" title="Crules-arch-diagram" src="http://redbrain.co.uk/wp-content/uploads/2009/07/Crules-arch-diagram-300x253.png" alt="Crules" width="300" height="253" /></a><p class="wp-caption-text">Crules</p></div>
<p><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } --></p>
<p style="margin-bottom: 0cm;" align="justify"><span style="font-family: Arial,sans-serif;">So I have to admit that&#8217;s the most impressive art I ever done (I know I&#8217;m lame <img src='http://redbrain.co.uk/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> ). Its my pipeline for my programming language, but I guess a lot of programming languages would follow this kind of model/architecture. So it got me thinking this is nearly the basics for any semi-serious interpreter or &#8216;a&#8217; language so lets talk though it. </span></p>
<p style="margin-bottom: 0cm;" align="justify"><span style="font-family: Arial,sans-serif;"><br />
</span></p>
<p style="margin-bottom: 0cm;" align="justify"><span style="font-family: Arial,sans-serif;">I am still not going to talk about the details of my language because its not ready yet. Other than I am doing fun things like, so far the only data-structure I let the developer have is lists, so if you do something like:</span></p>
<p style="margin-bottom: 0cm;" align="justify"><span style="font-family: Arial,sans-serif;"><br />
</span></p>
<blockquote>
<p style="margin-bottom: 0cm;" align="justify"><span style="font-family: Arial,sans-serif;">% foo := { 2,3,4,5,6,67,7}</span></p>
<p style="margin-bottom: 0cm;" align="justify"><span style="font-family: Arial,sans-serif;">#is a list and strings are lists!</span></p>
<p style="margin-bottom: 0cm;" align="justify"><span style="font-family: Arial,sans-serif;">% str := “bla”</span></p>
<p style="margin-bottom: 0cm;" align="justify"><span style="font-family: Arial,sans-serif;">#is the same as</span></p>
<p style="margin-bottom: 0cm;" align="justify"><span style="font-family: Arial,sans-serif;">% str := { &#8216;b&#8217;, &#8216;l&#8217;, &#8216;a&#8217; }</span></p>
<p style="margin-bottom: 0cm;" align="justify">
<p style="margin-bottom: 0cm;" align="justify"><span style="font-family: Arial,sans-serif;">It works a lot around the shell so you can also do:</span></p>
<p style="margin-bottom: 0cm;" align="justify"><span style="font-family: Arial,sans-serif;">% foo := `ls`</span></p>
<p style="margin-bottom: 0cm;" align="justify"><span style="font-family: Arial,sans-serif;">#it produces a delimited list of strings with the delimited as carriage return or new line etc.</span></p>
<p style="margin-bottom: 0cm;" align="justify"><span style="font-family: Arial,sans-serif;"><br />
</span></p></blockquote>
<p style="margin-bottom: 0cm;" align="justify"><span style="font-family: Arial,sans-serif;">Though note I am going to implement an api for arrays. But not yet, because lists are going to cause problems unless I implemented a table/array of accessors to the elements in the list so you can do fast access to the elements because it doesn&#8217;t scale no matter what anyone says when say you are doing image processing on a 1024&#215;1024 list&#8230; accessing the elements isn&#8217;t going to scale.</span></p>
<p style="margin-bottom: 0cm;" align="justify"><span style="font-family: Arial,sans-serif;"><br />
</span></p>
<p style="margin-bottom: 0cm;" align="justify"><span style="font-family: Arial,sans-serif;">Anyway so lets get back to looking into the pipeline of it: So first a user creates a program lets look at the helloworld.crl:</span></p>
<p><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } --></p>
<blockquote>
<p style="margin-bottom: 0cm;" align="justify"><span style="font-family: Arial,sans-serif;">rule main()</span></p>
<p style="margin-bottom: 0cm;" align="justify"><span style="font-family: Arial,sans-serif;">{</span></p>
<p style="margin-bottom: 0cm;" align="justify"><span style="font-family: Arial,sans-serif;"> echo “Hello World!”</span></p>
<p style="margin-bottom: 0cm;" align="justify"><span style="font-family: Arial,sans-serif;"> foo := 5 + 2 &#8211; 7</span></p>
<p style="margin-bottom: 0cm;" align="justify"><span style="font-family: Arial,sans-serif;">}</span></p>
<p style="margin-bottom: 0cm;" align="justify"><span style="font-family: Arial,sans-serif;">all := main;</span></p>
</blockquote>
<p><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } --></p>
<p style="margin-bottom: 0cm;" align="justify"><span style="font-family: Arial,sans-serif;">So first my interpreter will start lexing this using LEX, into tokens like: rule, main &#8216;(&#8216; &#8216;)&#8217;&#8230;. and then the parser starts applying the grammar implemented using YACC. So I start producing symbols to build a symbol table the data-structure looks like this its basicly a more high-level 3 address code:</span></p>
<p style="margin-bottom: 0cm;" align="justify">
<p style="margin-bottom: 0cm;" align="justify">
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw4">struct</span> symtab <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw4">const</span> <span class="kw4">char</span> *identifier;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; uint8_t symType;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; uint8_t op_a_t;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; uint8_t op_b_t;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw4">union</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; _SYM_LIST_ *list;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw4">float</span> flt;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; int32_t integer;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="kw4">char</span> ch;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1">//sym link to function call</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw4">struct</span> symtab *syms;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#125;</span> op_a;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw4">union</span> <span class="br0">&#123;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; _SYM_LIST_ *list;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw4">float</span> flt;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; int32_t integer;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1">//params to a func_call</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw4">struct</span> symstack *syms;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="kw4">struct</span> symtab *sy;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#125;</span> op_b;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw4">struct</span> symtab *next;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span> __attribute__<span class="br0">&#40;</span><span class="br0">&#40;</span>aligned<span class="br0">&#41;</span><span class="br0">&#41;</span>;</div>
</li>
</ol>
</div>
<p style="margin-bottom: 0cm;" align="justify">
<p style="margin-bottom: 0cm;" align="justify">
<p style="margin-bottom: 0cm;" align="justify">
<p><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } --></p>
<p style="margin-bottom: 0cm;" align="justify">
<p style="margin-bottom: 0cm;" align="justify"><span style="font-family: Arial,sans-serif;">So first it creates the rule definition! For now just think as rules as entry points to a program so you can add more identifiers to that &#8216;all&#8217; list not just main. It has a deeper meaning but I don&#8217;t want to talk or show this until I have the interpreter and language definitions more concrete!</span></p>
<p style="margin-bottom: 0cm;" align="justify"><span style="font-family: Arial,sans-serif;"><br />
</span></p>
<p style="margin-bottom: 0cm;" align="justify"><span style="font-family: Arial,sans-serif;">So the the rule &#8216;main&#8217; creates a new symbol like this:</span></p>
<p><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } --></p>
<blockquote>
<p style="margin-bottom: 0cm;" align="justify"><span style="font-family: Arial,sans-serif;">//the symbol takes the identifer of the rule identifier</span></p>
<p style="margin-bottom: 0cm;" align="justify"><span style="font-family: Arial,sans-serif;">symbol-&gt;identifer = &#8216;main&#8217;</span></p>
<p style="margin-bottom: 0cm;" align="justify"><span style="font-family: Arial,sans-serif;">//its a rule symbol</span></p>
<p style="margin-bottom: 0cm;" align="justify"><span style="font-family: Arial,sans-serif;">symbol-&gt;symType= _SYM _RULE _</span></p>
<p style="margin-bottom: 0cm;" align="justify"><span style="font-family: Arial,sans-serif;">symbol union_a is the link to the first symbol in that block of statements and union_b is NULL because I don&#8217;t need it until I have rule dependencies it needs to list.</span></p>
<p style="margin-bottom: 0cm;" align="justify"><span style="font-family: Arial,sans-serif;">symbol-&gt;next= NULL, because it is just a definition</span></p>
</blockquote>
<p><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } --></p>
<p style="margin-bottom: 0cm;" align="justify"><span style="font-family: Arial,sans-serif;">Then each expression like &#8216; echo “Hello World” &#8216;, creates a symbol and its next = the next expression like the &#8216; foo := 5 + 2 – 7 &#8216;. This creates an interesting one, because this can&#8217;t be reduced to a 3-address code until you split it up, for now I just assume the developer wants it to run as 5+2=7 then 7-7=0; But I am going to add precedence later. So you can be more expressive to have nested expressions in brackets to be executed first etc..</span></p>
<p style="margin-bottom: 0cm;" align="justify"><span style="font-family: Arial,sans-serif;"><br />
</span></p>
<p style="margin-bottom: 0cm;" align="justify"><span style="font-family: Arial,sans-serif;">But yeah this expression is split up into 3 symbols for now, its an over all variable Assignment but it depends an expression of 5+2 as a temporary symbol then this temporary symbol – 7 then foo = this new temporary symbol and I can push these dead symbols to the garbage collector. </span></p>
<p style="margin-bottom: 0cm;" align="justify"><span style="font-family: Arial,sans-serif;"><br />
</span></p>
<p style="margin-bottom: 0cm;" align="justify"><span style="font-family: Arial,sans-serif;">When a symbol is allocated, it is allocated memory of a preallocated memory heap of default 32MB, it can be extended or shortened if needs be, but it allows me to control and see how much memory is being occupied at anyone time in the runtime of the interpreter. Any symbols to be kept such as rule definitions, function definitions or variables are kept on one massive stack. So ok, that&#8217;s a problem if you need to search for them, the answer I found was having 3 other tables that link to the symbols in the stack. When any link is broke it becomes garbage, so when I have a new variable re-assignment I can break that link and remove the entry in the variable table it still exists in the symbol stack but the <a href="http://en.wikipedia.org/wiki/Garbage_collection_(computer_science)">Garbage collector</a> is always called on EXIT and the exit of any block statements like loops functions etc, so when you pop your way out of the stack you can have local variables instead of everything global and you have conflicts which will cause a lot of problems. Also the garbage collector is implemented as a <a href="http://en.wikipedia.org/wiki/POSIX_Threads">pthread</a> so you have have to pause for several seconds waiting for it to free the garbage. I haven&#8217;t done this yet because its going to be very awkward to keep the concurrency, the pthread mutex api should handle a lot for me but its still going to be complicated. I have thought I might like to try implementing a lot of different internal using OPEN/MP to make it even speedier, but that won&#8217;t be for a while.</span></p>
<p style="margin-bottom: 0cm;" align="justify"><span style="font-family: Arial,sans-serif;"><br />
</span></p>
<p style="margin-bottom: 0cm;" align="justify"><span style="font-family: Arial,sans-serif;">And then I have been playing with<a href="http://llvm.org/"> LLVM</a> to create a <a href="http://llvm.org/docs/tutorial/index.html">JIT execution system</a>, you can see my posts on &#8216;Managing the JIT&#8217; on comp.compilers, I have posted there quite a few times before, its a great list of basically all programming language, compiler and interpreter experts in the world!</span></p>
<p style="margin-bottom: 0cm;" align="justify"><span style="font-family: Arial,sans-serif;"><br />
</span></p>
<p style="margin-bottom: 0cm;" align="justify"><span style="font-family: Arial,sans-serif;">So I have a variable table that links to the variables in the symbol stack and the same for the rules and functions. This speed up searching for specific identifiers.</span></p>
<p style="margin-bottom: 0cm;" align="justify"><span style="font-family: Arial,sans-serif;"><br />
</span></p>
<p style="margin-bottom: 0cm;" align="justify"><span style="font-family: Arial,sans-serif;">So that&#8217;s the basics of parsing into symbols I guess, it pains me to say but many people thing a programming language is mainly a parser is so wrong the parser just lets you build your symbols the execution and management of these symbols is much, much more complicated. That&#8217;s not to say implementing a simple programming language is difficult, the problem I see a lot is people are scared of doing it because the vocabulary is huge! I mean if you start working at an interpreter from first principle&#8217;s I&#8217;ll guarantee if you have half a brain you&#8217;ll come to a similar architecture as this. </span></p>
<p style="margin-bottom: 0cm;" align="justify">
<p style="margin-bottom: 0cm;" align="justify">
<p style="margin-bottom: 0cm;" align="justify"><span style="font-family: Arial,sans-serif;">I found it difficult at the start when I knew anything in a programming language can always be brought to 3 things and I got really confused when people talked about symbol tables, 3 address code, IR (intermediate representation) and parse trees or syntax tree&#8217;s. I think a lot of developers have their own prefered meanings to them, but it is mainly a barrier of academics trying to make the subject more complicated than needs be, although when you go at this from first principle&#8217;s you&#8217;ll will soon learn <img src='http://redbrain.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</span></p>
<p style="margin-bottom: 0cm;" align="justify">
<p style="margin-bottom: 0cm;" align="justify">
<p style="margin-bottom: 0cm;" align="justify"><span style="font-family: Arial,sans-serif;">So thats the main focus of my personal work but I am now also soon to be an approved <a href="http://gcc.gnu.org/">GNU/gcc</a> and <a href="http://www.gnu.org/software/automake/">GNU/automake</a> developer! Can&#8217;t wait, got my FSF paper work signed and sent back it may arrive in Boston soon I guess but yeah I am excited. I am updating the automake documentation to show the best way to handle multiple <a href="http://en.wikipedia.org/wiki/Lex_programming_tool">LEX</a> and <a href="http://en.wikipedia.org/wiki/Yacc">YACC</a> in one program. Its something only one of two people do but its a problem none the less and to make it portable is the actual problem. But I have the solutions to it now <img src='http://redbrain.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</span></p>
<p style="margin-bottom: 0cm;" align="justify"><span style="font-family: Arial,sans-serif;"><br />
</span></p>
<p style="margin-bottom: 0cm;" align="justify">
<div class="wp-caption alignright" style="width: 262px"><a href="http://icanhascheezburger.files.wordpress.com/2009/07/funny-pictures-cat-has-pushed-in-face.jpg"><img title="Got your attention" src="http://icanhascheezburger.files.wordpress.com/2009/07/funny-pictures-cat-has-pushed-in-face.jpg" alt="Got your attention" width="252" height="188" /></a><p class="wp-caption-text">Got your attention</p></div>
<p style="margin-bottom: 0cm;" align="justify">
<p style="margin-bottom: 0cm;" align="justify"><span style="font-family: Arial,sans-serif;">Thing is I would really love it if I had an AIX/FreeBSD/Solaris machine to do more testing on because now that I am doing work on GCC it would be so helpful to have more machines to do testing. But i&#8217;m ok for now, so far in GCC I am doing regression testing to find a regression I can tackle, its extremely difficult some are defunct on the <a href="http://gcc.gnu.org/bugzilla/">bugzilla</a> some are ancient and not perused. And the rest is very active but for MIPS or SPARC, and I don&#8217;t have a <a href="http://www.scratchbox.org/">scratchbox</a> setup to even test that yet. Would just be great to get my hands on even an old ibook for a power-pc cpu or an old IBM p-server. If anyone knows of any available I would be really grateful!<br />
</span></p>
<p style="margin-bottom: 0cm;" align="justify"><span style="font-family: Arial,sans-serif;"><br />
</span></p>
<p style="margin-bottom: 0cm;" align="justify">
<p style="margin-bottom: 0cm;" align="justify"><span style="font-family: Arial,sans-serif;">Ok this has become a very long post so I&#8217;ll shut up! <img src='http://redbrain.co.uk/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> . See you guys from <a href="http://www.belfastlinux.org/wiki/Main_Page">Beflast LUG</a> on Wednesday!</span><span style="font-family: Arial,sans-serif;"> One last thing i want to link you to 5 of my favourite bands and they are all off <a href="http://www.jamendo.com/en/">Jamendo</a>:</span></p>
<p style="margin-bottom: 0cm;" align="justify"><span style="font-family: Arial,sans-serif;"><br />
</span></p>
<ul>
<li><a href="http://www.jamendo.com/en/album/26656">http://www.jamendo.com/en/album/26656</a></li>
<li><a href="http://www.jamendo.com/en/album/34523">http://www.jamendo.com/en/album/34523</a></li>
<li><a href="http://www.jamendo.com/en/album/42122">http://www.jamendo.com/en/album/42122</a></li>
<li><a href="http://www.jamendo.com/en/album/34714">http://www.jamendo.com/en/album/34714</a></li>
<li><a href="http://www.jamendo.com/en/album/3661">http://www.jamendo.com/en/album/3661</a></li>
</ul>
<pre><span><span> </span></span></pre>
]]></content:encoded>
			<wfw:commentRss>http://redbrain.co.uk/index.php/update/update-interpreter-crules-jamedo/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Swap my memory!</title>
		<link>http://redbrain.co.uk/index.php/update/swap-my-memory/</link>
		<comments>http://redbrain.co.uk/index.php/update/swap-my-memory/#comments</comments>
		<pubDate>Tue, 23 Jun 2009 16:26:58 +0000</pubDate>
		<dc:creator>redbrain</dc:creator>
				<category><![CDATA[Update!]]></category>
		<category><![CDATA[containers]]></category>
		<category><![CDATA[exim]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[memory]]></category>
		<category><![CDATA[swap]]></category>

		<guid isPermaLink="false">http://redbrain.co.uk/?p=361</guid>
		<description><![CDATA[<p>So its been a while since i have updated, while i was offline i guess, i have been moving to a new server! I have had a few teething problems but i think its all going fine now!</p>
<p>I decided for a VPS off: http://www.vpsville.ca/index</p>
<p>I got the CITY plan Its very powerful because its running in [...]]]></description>
			<content:encoded><![CDATA[<p>So its been a while since i have updated, while i was offline i guess, i have been moving to a new server! I have had a few teething problems but i think its all going fine now!</p>
<p>I decided for a VPS off: <a href="http://www.vpsville.ca/index">http://www.vpsville.ca/index</a></p>
<p>I got the CITY plan Its very powerful because its running in some kind of container VPS, i get to see the full &#8216;$ cat /proc/cpuinfo&#8217;. And it 8 core&#8217;s of the new Intel core i7! But i only have 256mb ram which was the teething problem so i turned off innodb in mysql and limited php memory usage to help compensate. It was nice Debian Server has all the mysql.conf and php.conf files all documented very well so you generally have an idea what your changing.</p>
<p>This is a very useful link for mysql tunning: <a href="http://howtoforge.com/tuning-mysql-performance-with-mysqltuner">http://howtoforge.com/tuning-mysql-performance-with-mysqltuner</a></p>
<blockquote><p>&#8212;&#8212;&#8211; General Statistics &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
[--] Skipped version check for MySQLTuner script<br />
[OK] Currently running supported MySQL version 5.0.75-0ubuntu10.2<br />
[OK] Operating on 32-bit architecture with less than 2GB RAM</p>
<p>&#8212;&#8212;&#8211; Storage Engine Statistics &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
[--] Status: +Archive -BDB -Federated -InnoDB -ISAM -NDBCluster<br />
[--] Data in MyISAM tables: 940K (Tables: 32)<br />
[--] Data in MEMORY tables: 0B (Tables: 1)<br />
[!!] Total fragmented tables: 2</p>
<p>&#8212;&#8212;&#8211; Performance Metrics &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
[--] Up for: 2h 45m 48s (6K q [0.612 qps], 214 conn, TX: 11M, RX: 1M)<br />
[--] Reads / Writes: 74% / 26%<br />
[--] Total buffers: 58.0M global + 2.6M per thread (100 max threads)<br />
[!!] Maximum possible memory usage: 320.5M (125% of installed RAM)<br />
[OK] Slow queries: 0% (0/6K)<br />
[OK] Highest usage of available connections: 4% (4/100)<br />
[OK] Key buffer size / total MyISAM indexes: 16.0M/331.0K<br />
[OK] Key buffer hit rate: 99.7% (29K cached / 87 reads)<br />
[OK] Query cache efficiency: 58.5% (2K cached / 4K selects)<br />
[OK] Query cache prunes per day: 0<br />
[OK] Sorts requiring temporary tables: 0% (0 temp sorts / 291 sorts)<br />
[!!] Temporary tables created on disk: 30% (103 on disk / 339 total)<br />
[OK] Thread cache hit rate: 98% (4 created / 214 connections)<br />
[OK] Table cache hit rate: 89% (50 open / 56 opened)<br />
[OK] Open file limit used: 9% (98/1K)<br />
[OK] Table locks acquired immediately: 100% (3K immediate / 3K locks)</p>
<p>&#8212;&#8212;&#8211; Recommendations &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
General recommendations:<br />
Run OPTIMIZE TABLE to defragment tables for better performance<br />
MySQL started within last 24 hours &#8211; recommendations may be inaccurate<br />
Reduce your overall MySQL memory footprint for system stability<br />
Enable the slow query log to troubleshoot bad queries<br />
When making adjustments, make tmp_table_size/max_heap_table_size equal<br />
Reduce your SELECT DISTINCT queries without LIMIT clauses<br />
Variables to adjust:<br />
*** MySQL&#8217;s maximum memory usage is dangerously high ***<br />
*** Add RAM before increasing MySQL buffer variables ***<br />
tmp_table_size (&gt; 32M)<br />
max_heap_table_size (&gt; 16M)</p></blockquote>
<p>That&#8217;s the kind of output i got in my first go so i start going though each of these recommendations: This link shows you each of the different variables you can change: <a href="http://dev.mysql.com/doc/refman/5.1/en/innodb-configuration.html">http://dev.mysql.com/doc/refman/5.1/en/innodb-configuration.html</a>, I think you can change a lot of Apache  memory variables but i haven&#8217;t looked into this yet!</p>
<p>But i also decided to make a swap file, this is very easy in Linux if your system is all running directly off a rootfs you can:</p>
<blockquote><p>$ dd if=/dev/zero of=/myswapfile bs=1024 count=1048576</p>
<p>#this should make you a 1G file which we can use for a Swap file!</p>
<p>$ mkswap /myswapfile</p>
<p>$ swapon /myswapfile</p>
<p>#this should work but in my VPS i keep getting &#8216;swapon: swapfile: Operation not permitted&#8217;</p>
<p>#you can also add this to your fstab like so:</p>
<p>$ echo &#8220;/myswapfile       none    swap    sw      0       0&#8243; &gt;&gt; /etc/fstab</p></blockquote>
<p>So yeah that&#8217;s quite useful to know! I have to say i have upgraded my wordpress to 2.8 and very unhappy to be honest, there are a lot of little bits and pieces annoying me 2.7.1 was a very good release! But this 2.8 is very memory hungry, but from what i read is that they have introduced a new API for widgets, plugins and themes. So i guess there will be problems for a while!</p>
<p>Anyways what i am hosting on my VPS is 4 sites:</p>
<p><a href="http://redbrain.co.uk">http://redbrain.co.uk</a></p>
<p><a href="http://brendanmullan.com">http://brendanmullan.com</a></p>
<p><a href="http://team-qcg.com">http://team-qcg.com</a></p>
<p><a href="http://animeequation.com">http://animeequation.com</a></p>
<p>They are the websites so i run: mySQL,   Exim mail server(because <a href="http://www.earth.li/~noodles/">noodles</a> recommended it to me), Apache (might test light httpd), PHP plus various php plugins, git (using those python-tools): <a href="http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way">http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way</a></p>
<p>I have to say anyone who works with me will know i hate SVN and CVS. Mainly because they are just retarded and your locked in too much and if the server goes down, then what the hell are you meant to do. My main reason for sticking with Linux was the fact now your no longer locked into software. A lot of people i know in the windows world use windows but use &#8216;cracked&#8217; copies of it, as-well as photoshop, games, office etc&#8230; all downloaded etc. Using free software alternatives means your no longer reliant on these kinds of software and you know whats available and you learn alot more about your computer and why!</p>
<p>So anyways i thought i would post a screenshot of my current desktop i think it looks pretty nice tbh! I was using <a href="http://en.wikipedia.org/wiki/Xmonad">Xmonad</a> for ages there, its a great window manager written in haskell its great because i run a server on my work desktop! And then i still need a way to run firefox, email and emacs. So this was very useful, and its very lightweight and usable. Other tiling window managers are light but very complicated!</p>
<div id="attachment_366" class="wp-caption alignleft" style="width: 310px"><a rel="attachment wp-att-366" href="http://redbrain.co.uk/?attachment_id=366"><img class="size-medium wp-image-366" title="myDesktop" src="http://redbrain.co.uk/wp-content/uploads/2009/06/desktop-300x187.png" alt="my laptop" width="300" height="187" /></a><p class="wp-caption-text">my laptop</p></div>
<p>So i am also giving <a href="http://en.wikipedia.org/wiki/Haskell_(programming_language)">Haskell</a> another go, i got the book &#8216;Real World Haskell&#8217;, its actually pretty good there is a helluva lot of learn, but its going to take a while before i&#8217;ll be seriously able to say i can write a mail client in haskell rofl! I would seriously like to make a GHS right now a gcc implementation of Haskell, because i have started the gcc-front-end documentation with a friend.</p>
<p><a href="http://gcc.gnu.org/wiki/FrontEnd/skeleton">http://gcc.gnu.org/wiki/FrontEnd/skeleton</a></p>
<p>Problem is were kind of stuck right now, i posted most of it all so far and put up the code, etc but there have been quite a few changes in the latest gcc-4.5-snapshots so trying to keep up with them. But the real problem is i posted the code etc, but posting source code on a wiki page&#8230; its not that nice! So this is another point where the gcc-developers on oftc.net have said should really get my FSF-copyright assignment document stuff done, because i have my automake work and now gcc, and they would like to see official documentation in the GCC-manual in the next releases i think this would really help GCC.</p>
<p>If you working in industry like me, you&#8217;ll find the only real thing keeping compilers/interpreters and programming languages alive in large business driven companies is the idea of parallelism, this is quite old right now but its only really getting together now! I also have a book on <a href="http://en.wikipedia.org/wiki/OpenMP">OPEN/MP</a> and know some of the basics of it in C/C++. Its very impressive the implementation in GCC and the Glibc. There is only a little theory to learn about OPENMP because actualy coding with it, is very simple! But you wont understand the code until you learn a little about shared memory systems and threading on this! Because OPENMP at the end of the day is starting threads for faster execution behind the scene. But it does all the work for accessing and manipulating memory without breaking your code for you! So in that sense its awesome <img src='http://redbrain.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>So yeah i also joined <a href="http://wakoopa.com/redbrain">http://wakoopa.com/redbrain</a> Its quite an interesting idea! And also pointing out that: <a href="http://outlawpla.net/">http://outlawpla.net/</a> This is a Linux outlaws Planet, it should be cools i am hoping to get my blog on it as Dan and Fab pointed out in the show yesterday!</p>
<p>Anyways spent most of my time reading tbh recently so i havent been coding much, re-writing my OS from-scratch again i am starting to understand the i386 kind of now, and i want to structure my kernel correctly and make sure its as similar to just coding with libc as much as possible so i dont implement a stupidly named API of mad functions that only i understand! But i have done bits and pieces of cleaning my simple-programming language. Need to finish that tbh, there isn&#8217;t much more work for me to do to demonstrate the basics for it all. But been doing reading and writing takes alot of time when i work around my Job which takes up most of my time and i haven&#8217;t had a chance to get a break to do serious work at work, been documenating and transferring knowledge of work systems on Unix to new guys which is taking some time as they dont have a background in Linux or UNIX so its kind of frustrating to say the least.</p>
<p>Anyways i better head on looking forward to the <a href="http://www.belfastlinux.org/wiki/Main_Page">BLUG</a> meet on Wednesday! See you there guys!</p>
<div class="wp-caption alignleft" style="width: 510px"><a href="http://icanhascheezburger.files.wordpress.com/2009/06/funny-pictures-kitten-has-a-strange-roommate.jpg"><img title="space-time" src="http://icanhascheezburger.files.wordpress.com/2009/06/funny-pictures-kitten-has-a-strange-roommate.jpg" alt="no-space" width="500" height="374" /></a><p class="wp-caption-text">no-space</p></div>
]]></content:encoded>
			<wfw:commentRss>http://redbrain.co.uk/index.php/update/swap-my-memory/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

