<?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>Freedom Interface &#187; curiosidade</title>
	<atom:link href="http://www.freedominterface.org/tag/curiosidade/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.freedominterface.org</link>
	<description>Pensamentos livres</description>
	<lastBuildDate>Thu, 27 Oct 2011 11:04:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>CPU flags 2</title>
		<link>http://www.freedominterface.org/2011/10/19/cpu-flags-2/</link>
		<comments>http://www.freedominterface.org/2011/10/19/cpu-flags-2/#comments</comments>
		<pubDate>Wed, 19 Oct 2011 11:05:15 +0000</pubDate>
		<dc:creator>Eduardo Ramos</dc:creator>
				<category><![CDATA[curiosidade]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.freedominterface.org/?p=574</guid>
		<description><![CDATA[Em busca de maior detalhamento sobre o arquivo /proc/cpuinfo, encontrei mais algumas informações interessantes, como, checar se há o recurso de Turbo Boost no seu processador ou páginas aninhadas. Veja: ida &#8211; Intel Dynamic Acceleration (Turbo boost); ept &#8211; Intel Extended Page Table; npt &#8211; AMD Nested Page Table; ht &#8211; HyperThreading; hypervisior &#8211; É [...]]]></description>
			<content:encoded><![CDATA[<p>Em busca de maior detalhamento sobre o arquivo <strong>/proc/cpuinfo</strong>, encontrei mais algumas informações interessantes, como, checar se há o recurso de Turbo Boost no seu processador ou páginas aninhadas. Veja:</p>
<ul>
<li><strong>ida</strong> &#8211; Intel Dynamic Acceleration (Turbo boost);</li>
<li><strong>ept</strong> &#8211; Intel Extended Page Table;</li>
<li><strong>npt</strong> &#8211; AMD Nested Page Table;</li>
<li><strong>ht</strong> &#8211; HyperThreading;</li>
<li><strong>hypervisior</strong> &#8211; É uma máquina virtual sobre um hypervisior.</li>
</ul>
<p>Mais informações podem ser encontradas no arquivo <strong>cpufeature.h</strong> do código-fonte do Linux. Sua localização pode variar de acordo com a versão do kernel. Em <strong>3.0.0</strong> para uma máquina <strong>x86</strong>, está em <strong>arch/x86/include/asm</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.freedominterface.org/2011/10/19/cpu-flags-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Youtube URL offset</title>
		<link>http://www.freedominterface.org/2011/02/11/youtube-url-offset/</link>
		<comments>http://www.freedominterface.org/2011/02/11/youtube-url-offset/#comments</comments>
		<pubDate>Fri, 11 Feb 2011 16:42:17 +0000</pubDate>
		<dc:creator>Eduardo Ramos</dc:creator>
				<category><![CDATA[curiosidade]]></category>
		<category><![CDATA[Dicas]]></category>
		<category><![CDATA[vídeos]]></category>
		<category><![CDATA[dicas]]></category>

		<guid isPermaLink="false">http://www.freedominterface.org/?p=532</guid>
		<description><![CDATA[Hoje, por acaso, acabei descobrindo uma coisa muito interessante no Youtube. É possível abrir um vídeo não só pelo início, mas por qualquer parte dele. Não sei se ficou claro, mas segue a dica: http://www.youtube.com/watch?v=[video id]#at=[tempo de offset em segundos] Exemplo: http://www.youtube.com/watch?v=EShea9vWFtI#at=30 Vai começar o vídeo METNAL &#8211; Perfect Strangers (Deep Purple Cover) &#8211; Curitiba a [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.youtube.com"><img class="alignleft" src="http://www.treinaweb.com.br/blog/wp-content/uploads/2010/09/youtube.jpg" alt="Youtube" width="115" height="90" /></a>Hoje, por acaso, acabei descobrindo uma coisa muito interessante no Youtube. É possível abrir um vídeo não só pelo início, mas por qualquer parte dele.</p>
<p>Não sei se ficou claro, mas segue a dica:</p>
<p>http://www.youtube.com/watch?v=<strong>[video id]</strong>#at=<strong>[tempo de offset em segundos]</strong></p>
<p>Exemplo:</p>
<p><a href="http://www.youtube.com/watch?v=EShea9vWFtI#at=30">http://www.youtube.com/watch?v=EShea9vWFtI#at=30</a></p>
<p>Vai começar o vídeo <strong>METNAL &#8211; Perfect Strangers (Deep Purple Cover) &#8211; Curitiba</strong> a partir de <strong>30</strong> segundos do início.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.freedominterface.org/2011/02/11/youtube-url-offset/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Dicas rápidas</title>
		<link>http://www.freedominterface.org/2010/07/28/dicas-rapidas/</link>
		<comments>http://www.freedominterface.org/2010/07/28/dicas-rapidas/#comments</comments>
		<pubDate>Wed, 28 Jul 2010 13:37:11 +0000</pubDate>
		<dc:creator>Eduardo Ramos</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[curiosidade]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[utilidades]]></category>

		<guid isPermaLink="false">http://www.freedominterface.org/?p=301</guid>
		<description><![CDATA[Nessa ultima semana, descobri dois comandos que me foram bastante úteis. Esses são at e ionice. Abaixo segue um brief sobre ambos. At Esse comando é um agendador de tarefas. Semelhante ao cron, porém este não é cíclico. Agendar uma tarefa é fácil, basta informar ao at o arquivo que contém os comandos que serão [...]]]></description>
			<content:encoded><![CDATA[<p>Nessa ultima semana, descobri dois comandos que me foram bastante úteis. Esses são <strong>at</strong> e <strong>ionice</strong>. Abaixo segue um brief sobre ambos.</p>
<h3>At</h3>
<p>Esse comando é um agendador de tarefas. Semelhante ao <strong>cron</strong>, porém este não é cíclico. Agendar uma tarefa é fácil, basta informar ao <strong>at</strong> o arquivo que contém os comandos que serão executados e a hora e data. Talvez assim tenha ficado um pouco vago. Vou dar um exemplo. Crie um arquivo contendo o seguinte:</p>
<pre class="brush: plain; title: ; notranslate">
#/bin/sh
touch /tmp/teste-at
</pre>
<p>Assumindo que o arquivo criado seja o ~/job.txt, vamos agendar a execução desse programa:</p>
<pre class="brush: bash; title: ; notranslate">at -f ~/job.txt 3pm tomorrow</pre>
<p>Se tudo ocorrer bem, aparecerá uma mensagem semelhante à essa:</p>
<pre class="brush: bash; title: ; notranslate">job 1 at Thu Jul 29 15:00:00 2010</pre>
<p>A notação de hora e data do <strong>at</strong> é um tanto flexível. Neste exemplo, poderíamos definir como <strong>15:00 Jul 29 2010</strong>, ou então<strong>15:00 07/29/10</strong>. O resultado seria o mesmo. Para melhor detalhamento, consulte o manual do comando: <strong>man at</strong>. Para consultar os jobs que já foram agendados, use o comando primo <strong>atq</strong>, e para remover/cancelar um job, use o <strong>atrm</strong> fornecendo o id do job como primeiro argumento.</p>
<h3>ionice</h3>
<p>Assim como o comando <strong>nice</strong>, ele estabelece prioridades para os processos, mas este, se limita às operações de disco (I/O). Sua sintaxe é semelhante do seu primo <strong>nice</strong>. Dois argumentos eu enfatizo: -c e -p. O primeiro define o número da classe de prioridade e o segundo o número do PID que sofrerá a modificação.</p>
<p>As classes podem ser:</p>
<p style="padding-left: 30px;">Idle: O processo só usará o processador para I/O se nenhum outro processo estiver usando.</p>
<p style="padding-left: 30px;">Best effort: O processo concorrerá o processador em níveis de prioridade que podem ser definidas entre 0 e 7, sendo 0 (zero) a maior prioridade. Para definir esse valor, use a opção -n. Vale lembrar que qualquer que seja o nível de prioridadem ele sempre passará na frente de processos da classe Idle.</p>
<p style="padding-left: 30px;">Real-time: Esse é para processos que realmente necessitem de atenção de I/O. Assim como a classe Best effort, esse é dividido em 8 níveis de prioridades e sua definição é idêntica. Vale lembrar que qualquer processo dessa classe, mesmo que seja prioridade 7, passará na frente de processos Best effort e Idle.</p>
<p>O número das classes Idle, Best effort e Real-time são respectivamente 3, 2 e 1. 0 (zero) significa que não pertence a classe alguma. Caso queira já iniciar o processo com <strong>ionice</strong> definido, troque o argumento -p pelo comando em si, como por exemplo:</p>
<pre class="brush: bash; title: ; notranslate">ionice -c 3 cp ~/hugefile.img /tmp</pre>
<p>Ou seja, defina classe Idle para o processo que executará a cópia do arquivo hugefile.img.</p>
<p>Para maior detalhamento, consulte o manual do comando, <strong>man ioince</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.freedominterface.org/2010/07/28/dicas-rapidas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>swapfile</title>
		<link>http://www.freedominterface.org/2010/07/21/swapfile/</link>
		<comments>http://www.freedominterface.org/2010/07/21/swapfile/#comments</comments>
		<pubDate>Thu, 22 Jul 2010 01:49:32 +0000</pubDate>
		<dc:creator>Eduardo Ramos</dc:creator>
				<category><![CDATA[curiosidade]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[utilidades]]></category>

		<guid isPermaLink="false">http://www.freedominterface.org/?p=290</guid>
		<description><![CDATA[Para usuários GNU/Linux, é muito comum o termo swap, ou partição swap. Em poucas palavras, ele diz respeito à técnica de extender a memória física, que as vezes não é suficiente, para o disco rígido. No Linux, o subsistema de memória usa um mapeamento virtual da memória, que permite um programa da userspace gravar na [...]]]></description>
			<content:encoded><![CDATA[<p>Para usuários GNU/Linux, é muito comum o termo <em>swap</em>, ou <em>partição swap</em>. Em poucas palavras, ele diz respeito à técnica de extender a memória física, que as vezes não é suficiente, para o disco rígido. No Linux, o subsistema de memória usa um mapeamento virtual da memória, que permite um programa da userspace gravar na memória sem se preocupar onde está fisicamente. Mas este já é assunto para outro post.</p>
<p>Como de costume, logo na instalação de uma distribuição já particionamos o disco de uma tal maneira que uma parte fica reservada para a área de troca, que é a tradução de <em>swap</em>. Alguns usam partições primárias para isto, outros lógicas&#8230; Alguns seguem uma regra que diz que &#8220;a capacidade do <em>swap</em> deve ser o dobro da memória física&#8221;&#8230; mas no final, isso fica mesmo é a critério do administrador do sistema.</p>
<p>O problema da partição é que complica no caso de precisar aumentar seu espaço. Para isto, poderia criar outra partição e ativá-la no sistema, mas seria necessário espaço em disco não particionado.</p>
<p>Uma solução rápida para isto seria criar um arquivo de <em>swap</em>, ou <em>swapfile</em>. Para criá-lo é quase igual à uma partição, já que para o Linux, os dispositivos de block são representados como arquivos e, cá entre nós, uma partição nada mais é que um conteiner grande de dados (um arquivão!). Na prática, sua criação ficaria assim:</p>
<p>Gerar um arquivo do tamanho de 512 * 100.000 bytes (100.000 blocos de 512 bytes) contendo apenas zeros:</p>
<pre class="brush: bash; title: ; notranslate">dd if=/dev/zero of=/tmp/swapfile bs=512 count=100000</pre>
<p>Definir o arquivo criado como <em>swap</em>:</p>
<pre class="brush: bash; title: ; notranslate">mkswap /tmp/swapfile</pre>
<p>Ativar o novo arquivo no pool de <em>swap</em> do sistema com prioridade 0 (zero):</p>
<pre class="brush: bash; title: ; notranslate">swapon -p 0 /tmp/swapfile</pre>
<p>Verificar o pool <em>swap</em> do sistema:</p>
<pre class="brush: bash; title: ; notranslate">swapon -s</pre>
<p>Desativar um dispositivo/arquivo <em>swap</em> do sistema:</p>
<pre class="brush: bash; title: ; notranslate">swapoff /tmp/swapfile</pre>
<p>Quanto à performance e aplicabilidade em ambiente de produção, prefiro não opinar, mas acredito ser uma alternativa mais rápida e simples para o aumento da área de troca, <em>swap</em>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.freedominterface.org/2010/07/21/swapfile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LVM2 Snapshot</title>
		<link>http://www.freedominterface.org/2010/07/06/lvm2-snapshot/</link>
		<comments>http://www.freedominterface.org/2010/07/06/lvm2-snapshot/#comments</comments>
		<pubDate>Tue, 06 Jul 2010 17:36:39 +0000</pubDate>
		<dc:creator>Eduardo Ramos</dc:creator>
				<category><![CDATA[backup]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[utilidades]]></category>
		<category><![CDATA[virtualização]]></category>
		<category><![CDATA[curiosidade]]></category>

		<guid isPermaLink="false">http://www.freedominterface.org/?p=197</guid>
		<description><![CDATA[Nessas ultimas semanas andei procurando por uma solução eficiente para backups de discos, se possível, usando imagens. Eis que conheço o recurso de snapshot do LVM2. Ele é bastante fácil de usar, mas, é lógico, você precisa de uma partição no seu disco do tipo LVM, tipo 8e. Tendo isto em mãos, basta criar um [...]]]></description>
			<content:encoded><![CDATA[<p>Nessas ultimas semanas andei procurando por uma solução eficiente para backups de discos, se possível, usando imagens. Eis que conheço o recurso de snapshot do LVM2. Ele é bastante fácil de usar, mas, é lógico, você precisa de uma partição no seu disco do tipo LVM, tipo 8e.</p>
<p>Tendo isto em mãos, basta criar um grupo de volumes lógicos do tamanho desejado na nova partição LVM. Isso pode ser feito com o seguinte comando:</p>
<pre class="brush: bash; title: ; notranslate">vgcreate logical /dev/sdb1</pre>
<p>No meu caso, eu não especifiquei o tamanho máximo do grupo, portanto ele pega todo o espaço disponível em sdb1. A grosso modo, o grupo de volumes lógicos está para um disco físico assim como os volumes lógicos estão para as partições. A diferença é que a virtualização do disco permite um ambiente mais flexível e simples.</p>
<p>Com o grupo pronto, basta adicionar os volumes. Meu disco tem 80GB, e para teste vou gerar um volume de 10GB chamado <strong>teste</strong> no grupo <strong>logical</strong>:</p>
<pre class="brush: bash; title: ; notranslate">lvcreate -L10G -n teste logical</pre>
<p>Pronto! Agora pode verificar que existe um dispositivo de bloco criado em /dev/logical/teste. Ele representa o volume lógico. Ele se comporta como um dispositivo de bloco comum, e portanto, pode ser tratado como um. Para conseguir usar, esse volume precisa ser formatado. Eu costumo usar o raiserfs, mas pode ser usado ext3, ext4, xfs&#8230;</p>
<pre class="brush: bash; title: ; notranslate">
mkreiserfs /dev/logical/teste
mount -t reiserfs /dev/logical/teste /mnt/tmp
</pre>
<p>O volume agora pode ser usado normalmente. É só acessar o ponto de montagem /mnt/tmp. Com o ambiente todo pronto, agora vamos ao que interessa, o snapshot. Assumindo que o volume está em plena produção, vamos simular uma situação de backup online, que é a aplicação mais óbvia que vejo neste recurso. Para melhor entendimento, vamos analisando os passos seguintes:</p>
<pre class="brush: bash; title: ; notranslate">lvcreate -L 500M -s -n backup /dev/logical/teste</pre>
<p>Isso fará com que seja criado um volume lógico de 500MB, de nome backup e tipo snapshot do volume já existente /dev/logical/teste. O tamanho do snapshot é claramente menor que o volume original, e isso não está errado. No momento em que o snaphot é criado, o sistema &#8216;congela&#8217; o volume original para que possamos trabalhar com ele sem que haja alterações, e o tamanho do snapshot representa o volume de alterações que ele permitirá que o sistema em produção faça nesse volume sem que seja prejudicado. A grosso modo, é como se fosse um buffer de alterações, que são armazenadas sem serem efetivadas no volume original. Para aqueles que conhecem o sistema de arquivamento e hotbackup de SGBDs, é a mesma coisa.</p>
<p>Muitos dão exemplos de backups usando snapshots montando o volume snapshot e copiando os arquivos com <strong>cp</strong>, compactando com <strong>tar</strong> e <strong>gz</strong>, mas eu normalmente crio uma imagem completa com o <strong>dd</strong>. De qualquer forma, apresentarei ambos abaixo:</p>
<h3>Tar e gz</h3>
<pre class="brush: plain; title: ; notranslate">
mount -t reiserfs /dev/logical/backup /mnt/tmp0
tar cf ~/backup.tar.gz /mnt/tmp0
</pre>
<h3>dd</h3>
<pre class="brush: plain; title: ; notranslate">
dd if=/dev/logical/backup of=~/backup.img
</pre>
<p>Depois do backup, basta remover o snapshot que as alterações serão aplicadas.</p>
<pre class="brush: bash; title: ; notranslate">lvremove -f /dev/logical/backup</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.freedominterface.org/2010/07/06/lvm2-snapshot/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>diff binário</title>
		<link>http://www.freedominterface.org/2010/06/28/diff-binario/</link>
		<comments>http://www.freedominterface.org/2010/06/28/diff-binario/#comments</comments>
		<pubDate>Mon, 28 Jun 2010 16:56:12 +0000</pubDate>
		<dc:creator>Eduardo Ramos</dc:creator>
				<category><![CDATA[curiosidade]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[utilidades]]></category>

		<guid isPermaLink="false">http://www.freedominterface.org/?p=160</guid>
		<description><![CDATA[Estava eu procurando por uma solução de patch binário para compor uma parte do meu sistema de backups. Pois bem, embora não seja o cerne de tudo, vou explicar meu cenário para que seja melhor entendido. Eu estou trabalhando com máquinas virtuais com imagens de discos em volumes lógicos (LVM). Usando o recurso de snapshot [...]]]></description>
			<content:encoded><![CDATA[<p>Estava eu procurando por uma solução de patch binário para compor uma parte do meu sistema de backups. Pois bem, embora não seja o cerne de tudo, vou explicar meu cenário para que seja melhor entendido.</p>
<p>Eu estou trabalhando com máquinas virtuais com imagens de discos em volumes lógicos (<a href="http://pt.wikipedia.org/wiki/LVM" target="_blank">LVM</a>). Usando o recurso de snapshot do LVM, que é assunto para outro post, eu estava copiando inteiramente a imagem para um backup, através do comando <strong>dd</strong>. O problema é ter que fazer uma cópia full da  imagem a cada backup. Minha máquina de teste tem 10GB, mas imagina um servidor em produção, que pode ter várias dezenas de GBs&#8230; Fica inviável o backup deste jeito. Assim começou a busca por uma solução de calcular a diferença entre os dois binários, imagem de produção e a backup, para assim gerar um patch com somente o necessário para transferir ao servidor de backup. Após, eu precisaria aplicar este patch e assim atualizar a iamgem.</p>
<p>Pesquisando no oráculo Google, encontrei este <a href="http://www.daemonology.net/bsdiff/" target="_blank">site</a>. Lá pude baixar dois fontes, <strong>bsdiff</strong> e <strong>bspatch</strong>. Esses são versões &#8216;binárias&#8217; do GNU diff e patch. Depois de baixar, compilei usando o Makefile do próprio pacote. Como ele foi feito para os *BSD, o formato do Makefile é um pouco diferente. Para compilar direitinho, crie um arquivo chamado <strong>Makefile.patch</strong> no mesmo diretório do fonte. Dentro dele, coloque o seguinte conteúdo:</p>
<pre class="brush: diff; title: ; notranslate">
--- Makefile    2010-06-28 14:52:42.351369894 -0300
+++ Makefile.gnu        2010-06-28 14:53:29.883369968 -0300
@@ -1,4 +1,5 @@
 CFLAGS         +=      -O3 -lbz2
+INSTALL                ?=      /bin/install

 PREFIX         ?=      /usr/local
 INSTALL_PROGRAM        ?=      ${INSTALL} -c -s -m 555
@@ -10,6 +11,6 @@

 install:
        ${INSTALL_PROGRAM} bsdiff bspatch ${PREFIX}/bin
-.ifndef WITHOUT_MAN
+ifndef WITHOUT_MAN
        ${INSTALL_MAN} bsdiff.1 bspatch.1 ${PREFIX}/man/man1
-.endif
+endif
</pre>
<p>Salve o arquivo e aplique o patch da seguinte forma:</p>
<pre class="brush: bash; title: ; notranslate">patch -p0 &lt; Makefile.patch</pre>
<p>Depois disso, é só instalar:</p>
<pre class="brush: bash; title: ; notranslate">make install</pre>
<p>Para testar, fiz o seguinte: copiei para uma pasta os binários /bin/ls e /bin/bash. Lá, calculei a diferença usando o bsdiff:</p>
<pre class="brush: bash; title: ; notranslate">/usr/local/bin/bsdiff ls bash teste</pre>
<p>Assim, foi criado o arquivo binário <strong>teste</strong>, que é a diferença entre <strong>ls</strong> e <strong>bash</strong>, ou seja, um patch. Depois, eu resolvi aplicar este patch no próprio <strong>ls</strong>. Assim, eu faria este <strong>ls</strong> se transformar no <strong>bash</strong>.</p>
<p>/usr/local/bin/bspatch ls ls_patched teste</p>
<p>Realmente, aconteceu como eu esperava. O comand <strong>bspatch</strong> gerou um binário <strong>ls_patched</strong>, que é o resultado do <strong>ls</strong> + <strong>teste</strong>. E adivinha, ele é exatamente o <strong>bash</strong>. Executa  direitinho.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.freedominterface.org/2010/06/28/diff-binario/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Liberar espaço</title>
		<link>http://www.freedominterface.org/2010/06/21/liberar-espaco/</link>
		<comments>http://www.freedominterface.org/2010/06/21/liberar-espaco/#comments</comments>
		<pubDate>Mon, 21 Jun 2010 14:38:28 +0000</pubDate>
		<dc:creator>Eduardo Ramos</dc:creator>
				<category><![CDATA[curiosidade]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[utilidades]]></category>

		<guid isPermaLink="false">http://www.freedominterface.org/?p=150</guid>
		<description><![CDATA[De vez em quando, a partição root, ou / (barra), fica perto de usar sua capacidade máxima, e para que o sistema não pare, é preciso liberar um pouco de espaço. De cara, eu sempre penso no diretório /tmp. Claro, se ele fizer parte da mesma partição do /. Para solucionar temporariamente o problema de [...]]]></description>
			<content:encoded><![CDATA[<p>De vez em quando, a partição root, ou / (barra), fica perto de usar sua capacidade máxima, e para que o sistema não pare, é preciso liberar um pouco de espaço. De cara, eu sempre penso no diretório /tmp. Claro, se ele fizer parte da mesma partição do /. Para solucionar temporariamente o problema de espaço, eu excluo os arquivos temporários que não foram usados desde uma certa data. Para isto, o comando <strong>find </strong>é bastante útil. Como exemplo, no meu laptop, eu rodo a seguinte sentença:</p>
<pre class="brush: bash; title: ; notranslate">$ sudo find /tmp -atime +1 -exec rm -rfv{} \;</pre>
<p>Isto faz com que ele busque no diretório /tmp todos os arquivos que tem a data de acesso maior que 1 dia no passado e submete-o ao comando rm, para removê-lo. A data pode ser modificada alterando o parâmetro <strong>+1</strong> do atime. Caso coloque +2, serão buscados os arquivos com mais de 2 dias de acesso. Para mais informações, sempre existe o <strong>man</strong>.</p>
<pre class="brush: bash; title: ; notranslate">$ man find</pre>
<p>Outro utilitário bom para ajudar na busca por maior espaço livre é o <strong>du</strong> (disk usage). Ele faz uma somatória do uso de cada diretório e subdiretório. Dois parâmetros que sempre uso são: -h, para traduzir o espaço usado para unidades mais legíveis (GB, MB&#8230;); &#8211;max-depth=n, que diz ao du para correr até o nível n. Exemplo de uso:</p>
<pre class="brush: bash; title: ; notranslate">$ sudo du -h --max-depth=1 /tmp</pre>
<p>Ou seja, some o uso de todos os diretórios e subdiretórios de /tmp, porém só me exiba até o primeiro nível, de maneira legível.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.freedominterface.org/2010/06/21/liberar-espaco/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CPU flags</title>
		<link>http://www.freedominterface.org/2010/06/02/cpu-flags/</link>
		<comments>http://www.freedominterface.org/2010/06/02/cpu-flags/#comments</comments>
		<pubDate>Wed, 02 Jun 2010 19:58:12 +0000</pubDate>
		<dc:creator>Eduardo Ramos</dc:creator>
				<category><![CDATA[curiosidade]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.freedominterface.org/?p=135</guid>
		<description><![CDATA[Pelo tanto que venho lendo sobre virtualização e propriedades dos processadores, resolvi ir um pouco mais a fundo para saber o que significam aqueles nomes estranhos de instruções. No Linux pode-se verificar o conteúdo do arquivo /proc/cpuinfo: As mais comuns que vi referências foram: PAE (Physical Address Extensions) que permite endereçamento de memória acima de [...]]]></description>
			<content:encoded><![CDATA[<p>Pelo tanto que venho lendo sobre virtualização e propriedades dos processadores, resolvi ir um pouco mais a fundo para saber o que significam aqueles nomes estranhos de instruções. No Linux pode-se verificar o conteúdo do arquivo /proc/cpuinfo:</p>
<pre class="brush: bash; title: ; notranslate">

$ grep flags /proc/cpuinfo
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow rep_good extd_apicid pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy 3dnowprefetch lbrv
</pre>
<p>As mais comuns que vi referências foram: PAE (Physical Address Extensions) que permite endereçamento de memória acima de 4GB; HT (Hyper Threading) que permite um núcleo de processador possuir duas filhas de processamento, simulando assim processamento paralelo; LM (Long Mode) que indica presença de instruções x86_64; entre outros que podem ser encontrados <a href="http://blog.incase.de/index.php/cpu-feature-flags-and-their-meanings/" target="_blank">neste endereço</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.freedominterface.org/2010/06/02/cpu-flags/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

