<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet href='http://feed.feedsky.com/styles/temp01.xsl' type='text/xsl' ?><!--这是一个由Feedsy提供技术支持的Feed，为了提高读者阅读的体验，以及满足用户美化自己Feed的需要，我们设计了多种精美的Feed模板，提供给大家选择，所有最终呈现出来的样式，皆由用户自愿选择使用，未经许可，任何团体和个人，请不要擅自修改样式或者盗用，这是对于用户选择权的尊重。--><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:fs="http://www.feedsky.com/namespace/feed" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link href="http://feed.feedsky.com/teawater" type="application/rss+xml" rel="self"></atom:link><fs:self_link href="http://feed.feedsky.com/teawater" type="application/rss+xml"></fs:self_link><lastBuildDate>Sun, 30 Oct 2011 12:23:10 GMT</lastBuildDate><title>冒充另类</title><link>http://blog.sina.com.cn/teawater</link><language>zh-cn</language><copyright>Copyright 1996 - 2009 SINA Inc. All Rights Reserved.</copyright><pubDate>Sun, 30 Oct 2011 12:36:18 GMT</pubDate><item><title>月初拍的小花</title><link>http://blog.sina.com.cn/s/blog_5383a9420100z0ld.html</link><description>&lt;a HREF=&quot;http://www.tuhigh.com/photo/p/2751720&quot; TARGET=&quot;_blank&quot;&gt;
&lt;img SRC=&quot;http://photo.tuhigh.com/pics/1145/1030/204451t-1298901066_c.jpg&quot; ALT=&quot;20111003,花&quot; TITLE=&quot;20111003,花&quot; STYLE=&quot;border-style: initial; border-color: initial;&quot; /&gt;&lt;/A&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/571577671/teawater/feedsky/s.gif?r=http://blog.sina.com.cn/s/blog_5383a9420100z0ld.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>摄影日记</category><pubDate>Sun, 30 Oct 2011 20:23:10 +0800</pubDate><author>冒充另类</author><comments>http://blog.sina.com.cn/s/blog_5383a9420100z0ld.html#comment</comments><guid isPermaLink="false">http://blog.sina.com.cn/s/blog_5383a9420100z0ld.html</guid><dc:creator>冒充另类</dc:creator><fs:srclink>http://blog.sina.com.cn/s/blog_5383a9420100z0ld.html</fs:srclink><fs:srcfeed>http://blog.sina.com.cn/myblog/index_rss.php?uid=1401137474</fs:srcfeed><fs:itemid>feedsky/teawater/~1470330/571577671/1229119</fs:itemid></item><item><title>Ububtu 11.04 GNOME比较卡的解决 (metacity内存泄露修复方法)</title><link>http://blog.sina.com.cn/s/blog_5383a9420100xahl.html</link><description>&lt;span STYLE=&quot;font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: rgb(255, 255, 255);&quot;&gt;
最近装了Ubuntu 11.04 amd64版本 发现GNOME用起来很卡 用系统监视器 发现 metacity
竟然占了接近1G的内存&lt;br /&gt;
重启用了一上午 metacity 又占到了400M 看来是个内存泄露问题&lt;br /&gt;
而metacity 作为GNOME的关键组件 杀掉其或者卸载都是不成的 所以我介绍一下修复方法&lt;/SPAN&gt;
&lt;p&gt;&lt;span STYLE=&quot;font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: rgb(255, 255, 255);&quot;&gt;
基本思路就是 用11.10上的 metacity&lt;/SPAN&gt;&lt;/P&gt;
&lt;p&gt;首先建议11.04的用户用系统监视器看下自己机器上的 metacity 占了多少内存 如果比较大 应该是有泄露的&lt;/P&gt;
&lt;p&gt;如果是AMD64系统:&lt;br /&gt;
wget&amp;nbsp;&lt;a HREF=&quot;http://mirrors.sohu.com/ubuntu/pool/main/m/metacity/metacity_2.34.1-1ubuntu4_amd64.deb&quot; TARGET=&quot;_blank&quot;&gt;http://mirrors.sohu.com/&lt;wbr /&gt;ubuntu/pool/main/m/metacity/&lt;wbr /&gt;metacity_2.34.1-1ubuntu4_&lt;wbr /&gt;amd64.deb&lt;/A&gt;&lt;br /&gt;

wget&amp;nbsp;&lt;a HREF=&quot;http://mirrors.sohu.com/ubuntu/pool/main/m/metacity/metacity-common_2.34.1-1ubuntu4_all.deb&quot; TARGET=&quot;_blank&quot;&gt;http://mirrors.sohu.com/&lt;wbr /&gt;ubuntu/pool/main/m/metacity/&lt;wbr /&gt;metacity-common_2.34.1-&lt;wbr /&gt;1ubuntu4_all.deb&lt;/A&gt;&lt;br /&gt;

wget&amp;nbsp;&lt;a HREF=&quot;http://mirrors.sohu.com/ubuntu/pool/main/m/metacity/libmetacity-private0_2.34.1-1ubuntu4_amd64.deb&quot; TARGET=&quot;_blank&quot;&gt;http://mirrors.sohu.com/&lt;wbr /&gt;ubuntu/pool/main/m/metacity/&lt;wbr /&gt;libmetacity-private0_2.34.1-&lt;wbr /&gt;1ubuntu4_amd64.deb&lt;/A&gt;&lt;br /&gt;

sudo dpkg -i metacity_2.34.1-1ubuntu4_&lt;wbr /&gt;amd64.deb&lt;br /&gt;
metacity-common_2.34.1-&lt;wbr /&gt;1ubuntu4_all.deb&lt;br /&gt;
libmetacity-private0_2.34.1-&lt;wbr /&gt;1ubuntu4_amd64.deb&lt;br /&gt;
然后重启(新装的metacity 需要重启生效)&lt;/P&gt;
&lt;p&gt;如果是i386系统(没有实际检查过是否有内存泄露问题)：&lt;br /&gt;
wget&amp;nbsp;&lt;a HREF=&quot;http://mirrors.sohu.com/ubuntu/pool/main/m/metacity/metacity_2.34.1-1ubuntu4_i386.deb&quot; TARGET=&quot;_blank&quot;&gt;http://mirrors.sohu.com/&lt;wbr /&gt;ubuntu/pool/main/m/metacity/&lt;wbr /&gt;metacity_2.34.1-1ubuntu4_i386.&lt;wbr /&gt;deb&lt;/A&gt;&lt;br /&gt;

wget&amp;nbsp;&lt;a HREF=&quot;http://mirrors.sohu.com/ubuntu/pool/main/m/metacity/metacity-common_2.34.1-1ubuntu4_all.deb&quot; TARGET=&quot;_blank&quot;&gt;http://mirrors.sohu.com/&lt;wbr /&gt;ubuntu/pool/main/m/metacity/&lt;wbr /&gt;metacity-common_2.34.1-&lt;wbr /&gt;1ubuntu4_all.deb&lt;/A&gt;&lt;br /&gt;

wget&amp;nbsp;&lt;a HREF=&quot;http://mirrors.sohu.com/ubuntu/pool/main/m/metacity/libmetacity-private0_2.34.1-1ubuntu4_i386.deb&quot; TARGET=&quot;_blank&quot;&gt;http://mirrors.sohu.com/&lt;wbr /&gt;ubuntu/pool/main/m/metacity/&lt;wbr /&gt;libmetacity-private0_2.34.1-&lt;wbr /&gt;1ubuntu4_i386.deb&lt;/A&gt;&lt;br /&gt;

sudo dpkg -i metacity_2.34.1-1ubuntu4_i386.&lt;wbr /&gt;deb&lt;br /&gt;
metacity-common_2.34.1-&lt;wbr /&gt;1ubuntu4_all.deb&lt;br /&gt;
libmetacity-private0_2.34.1-&lt;wbr /&gt;1ubuntu4_i386.deb&lt;br /&gt;
然后重启(新装的metacity 需要重启生效)&amp;nbsp;&lt;/P&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/571577672/teawater/feedsky/s.gif?r=http://blog.sina.com.cn/s/blog_5383a9420100xahl.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>技术</category><pubDate>Mon, 19 Sep 2011 12:16:38 +0800</pubDate><author>冒充另类</author><comments>http://blog.sina.com.cn/s/blog_5383a9420100xahl.html#comment</comments><guid isPermaLink="false">http://blog.sina.com.cn/s/blog_5383a9420100xahl.html</guid><dc:creator>冒充另类</dc:creator><fs:srclink>http://blog.sina.com.cn/s/blog_5383a9420100xahl.html</fs:srclink><fs:srcfeed>http://blog.sina.com.cn/myblog/index_rss.php?uid=1401137474</fs:srcfeed><fs:itemid>feedsky/teawater/~1470330/571577672/1229119</fs:itemid></item><item><title>玩摄影的人你伤不起啊</title><link>http://blog.sina.com.cn/s/blog_5383a9420100u6k1.html</link><description>&lt;span STYLE=&quot;font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: rgb(255, 255, 255);&quot;&gt;
早上带孩子去紫竹院呼吸新鲜空气 发现坐船看荷花挺方便 于是上了船&lt;br /&gt;&lt;/SPAN&gt;
&lt;div&gt;
&lt;table WIDTH=&quot;800&quot; ALIGN=&quot;center&quot; STYLE=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial;&quot;&gt;
&lt;tbody STYLE=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial;&quot;&gt;
&lt;tr STYLE=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial;&quot;&gt;
&lt;td VALIGN=&quot;top&quot; STYLE=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-family: arial, sans-serif; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial; font-size: 12px; color: rgb(187, 187, 187);&quot;&gt;
&lt;div STYLE=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial; font-size: 12px; color: rgb(187, 187, 187);&quot;&gt;
&lt;br /&gt;&lt;/DIV&gt;
&lt;div STYLE=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial; font-size: 12px; color: rgb(187, 187, 187);&quot;&gt;
&lt;a HREF=&quot;http://www.tuhigh.com/photo/p/2557542&quot; TARGET=&quot;_blank&quot;&gt;
&lt;img SRC=&quot;http://photo.tuhigh.com/pics/1129/0710/204451t1441356508_d.jpg&quot; ALT=&quot;_MG_8497&quot; TITLE=&quot;_MG_8497&quot; WIDTH=&quot;420&quot; HEIGHT=&quot;279&quot; STYLE=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial;&quot; /&gt;&lt;/A&gt;&lt;/DIV&gt;
&lt;div STYLE=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial; font-size: 12px; color: rgb(187, 187, 187); clear: both;&quot;&gt;
&lt;/DIV&gt;
&lt;div STYLE=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial; font-size: 12px; color: rgb(156, 156, 156);&quot;&gt;
发现一堆人拿着长枪短炮的对着一小片荷花狂拍&lt;/DIV&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;tr STYLE=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial;&quot;&gt;
&lt;td VALIGN=&quot;top&quot; STYLE=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-family: arial, sans-serif; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial; font-size: 12px; color: rgb(187, 187, 187);&quot;&gt;
&lt;div STYLE=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial; font-size: 12px; color: rgb(187, 187, 187);&quot;&gt;
&lt;br /&gt;&lt;/DIV&gt;
&lt;div STYLE=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial; font-size: 12px; color: rgb(187, 187, 187);&quot;&gt;
&lt;a HREF=&quot;http://www.tuhigh.com/photo/p/2557548&quot; TARGET=&quot;_blank&quot;&gt;
&lt;img SRC=&quot;http://photo.tuhigh.com/pics/1129/0710/204451t-1837702086_d.jpg&quot; ALT=&quot;_MG_8503&quot; TITLE=&quot;_MG_8503&quot; WIDTH=&quot;420&quot; HEIGHT=&quot;277&quot; STYLE=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial;&quot; /&gt;&lt;/A&gt;&lt;/DIV&gt;
&lt;div STYLE=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial; font-size: 12px; color: rgb(187, 187, 187);&quot;&gt;
船近了发现人可真是不少&lt;/DIV&gt;
&lt;div STYLE=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial; font-size: 12px; color: rgb(187, 187, 187); clear: both;&quot;&gt;
&lt;/DIV&gt;
&lt;div STYLE=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial; font-size: 12px; color: rgb(156, 156, 156);&quot;&gt;
&lt;br /&gt;&lt;/DIV&gt;
&lt;div STYLE=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial; font-size: 12px; color: rgb(156, 156, 156);&quot;&gt;
&lt;br /&gt;&lt;/DIV&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;tr STYLE=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial;&quot;&gt;
&lt;td VALIGN=&quot;top&quot; STYLE=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-family: arial, sans-serif; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial; font-size: 12px; color: rgb(187, 187, 187);&quot;&gt;
&lt;div STYLE=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial; font-size: 12px; color: rgb(187, 187, 187);&quot;&gt;
&lt;/DIV&gt;
&lt;div STYLE=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial; font-size: 12px; color: rgb(187, 187, 187);&quot;&gt;
&lt;a HREF=&quot;http://www.tuhigh.com/photo/p/2557554&quot; TARGET=&quot;_blank&quot;&gt;
&lt;img SRC=&quot;http://photo.tuhigh.com/pics/1129/0710/204451t1285653087_d.jpg&quot; ALT=&quot;_MG_8504&quot; TITLE=&quot;_MG_8504&quot; WIDTH=&quot;420&quot; HEIGHT=&quot;279&quot; STYLE=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial;&quot; /&gt;&lt;/A&gt;&lt;/DIV&gt;
&lt;div STYLE=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial; font-size: 12px; color: rgb(187, 187, 187); clear: both;&quot;&gt;
&lt;/DIV&gt;
&lt;div STYLE=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial; font-size: 12px; color: rgb(156, 156, 156);&quot;&gt;
&lt;br /&gt;&lt;/DIV&gt;
&lt;div STYLE=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial; font-size: 12px; color: rgb(156, 156, 156);&quot;&gt;
&lt;br /&gt;&lt;/DIV&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;tr STYLE=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial;&quot;&gt;
&lt;td VALIGN=&quot;top&quot; STYLE=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-family: arial, sans-serif; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial; font-size: 12px; color: rgb(187, 187, 187);&quot;&gt;
&lt;div STYLE=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial; font-size: 12px; color: rgb(187, 187, 187);&quot;&gt;
&lt;/DIV&gt;
&lt;div STYLE=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial; font-size: 12px; color: rgb(187, 187, 187);&quot;&gt;
&lt;a HREF=&quot;http://www.tuhigh.com/photo/p/2557555&quot; TARGET=&quot;_blank&quot;&gt;
&lt;img SRC=&quot;http://photo.tuhigh.com/pics/1129/0710/204451t1459472068_d.jpg&quot; ALT=&quot;_MG_8530&quot; TITLE=&quot;_MG_8530&quot; WIDTH=&quot;420&quot; HEIGHT=&quot;279&quot; STYLE=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial;&quot; /&gt;&lt;/A&gt;&lt;/DIV&gt;
&lt;div STYLE=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial; font-size: 12px; color: rgb(187, 187, 187);&quot;&gt;
面对这么一小片荷花和这么一大堆人 我评价一句 玩摄影的人真是伤不起啊&lt;/DIV&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;/DIV&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/571577673/teawater/feedsky/s.gif?r=http://blog.sina.com.cn/s/blog_5383a9420100u6k1.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>摄影日记</category><pubDate>Sun, 10 Jul 2011 16:34:55 +0800</pubDate><author>冒充另类</author><comments>http://blog.sina.com.cn/s/blog_5383a9420100u6k1.html#comment</comments><guid isPermaLink="false">http://blog.sina.com.cn/s/blog_5383a9420100u6k1.html</guid><dc:creator>冒充另类</dc:creator><fs:srclink>http://blog.sina.com.cn/s/blog_5383a9420100u6k1.html</fs:srclink><fs:srcfeed>http://blog.sina.com.cn/myblog/index_rss.php?uid=1401137474</fs:srcfeed><fs:itemid>feedsky/teawater/~1470330/571577673/1229119</fs:itemid></item><item><title>从launchpad PPA取得最新版本GDB</title><link>http://blog.sina.com.cn/s/blog_5383a9420100skv5.html</link><description>&lt;div&gt;GDB和UBUNTU用户们你们好,&lt;/DIV&gt;
&lt;div&gt;&lt;br /&gt;&lt;/DIV&gt;
&lt;div&gt;也许你还在用7.2或者更老版本的GDB,这里面BUG成堆压根没人管了,或者很好用的GDB新功能你也用不上.&lt;/DIV&gt;
&lt;div&gt;或者你要同时在好几个体系结构上工作例如ARM和MIPS,而你要针对每个体系结构编译一个GDB.&lt;/DIV&gt;
&lt;div&gt;&lt;br /&gt;&lt;/DIV&gt;
&lt;div&gt;我开始在launchpad PPA上发布UBUNTU 10.04, 10.10, 11.04,&lt;/DIV&gt;
&lt;div&gt;11.10(8.04还有点问题)可用的最新版本的GDB(7.3 和 7.3.5).&lt;/DIV&gt;
&lt;div&gt;这些GDB的特点是:&lt;/DIV&gt;
&lt;div&gt;1. GDB maintainer天天更新他们,他们有最新的功能和更快的BUG修复速度.&lt;/DIV&gt;
&lt;div&gt;2. 他们都用&quot;--enable-targets=all&lt;/DIV&gt;
&lt;div&gt;
--enable-64-bit-bfd&quot;选项编译,所以他们支持GDB支持的所有体系结构,你可以本地调试也可以随时用他们调试远程的其他体系结构的程序.&lt;/DIV&gt;
&lt;div&gt;3. 包名是&quot;gdb-7.3&quot; 和 &quot;gdb-trunk&quot;而 GDB程序的名称是&quot;gdb-7.3&quot;和
&quot;gdb-7.3.5&quot;.&lt;/DIV&gt;
&lt;div&gt;所以其不会影响你原来安装的GDB, 如果你在使用新版GDB的时候出现问题,随时可以换回老版本的GDB.&lt;/DIV&gt;
&lt;div&gt;&lt;br /&gt;&lt;/DIV&gt;
&lt;div&gt;取得他们请访问下面的URL:&lt;/DIV&gt;
&lt;div&gt;https://launchpad.net/~teawater/+archive/gdb-10.04&lt;/DIV&gt;
&lt;div&gt;https://launchpad.net/~teawater/+archive/gdb-10.10&lt;/DIV&gt;
&lt;div&gt;https://launchpad.net/~teawater/+archive/gdb-11.04&lt;/DIV&gt;
&lt;div&gt;https://launchpad.net/~teawater/+archive/gdb-11.10&lt;/DIV&gt;
&lt;div&gt;&lt;br /&gt;&lt;/DIV&gt;
&lt;div&gt;谢谢,&lt;/DIV&gt;
&lt;div&gt;teawater&lt;/DIV&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/571577674/teawater/feedsky/s.gif?r=http://blog.sina.com.cn/s/blog_5383a9420100skv5.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>技术</category><pubDate>Sat, 04 Jun 2011 22:34:11 +0800</pubDate><author>冒充另类</author><comments>http://blog.sina.com.cn/s/blog_5383a9420100skv5.html#comment</comments><guid isPermaLink="false">http://blog.sina.com.cn/s/blog_5383a9420100skv5.html</guid><dc:creator>冒充另类</dc:creator><fs:srclink>http://blog.sina.com.cn/s/blog_5383a9420100skv5.html</fs:srclink><fs:srcfeed>http://blog.sina.com.cn/myblog/index_rss.php?uid=1401137474</fs:srcfeed><fs:itemid>feedsky/teawater/~1470330/571577674/1229119</fs:itemid></item><item><title>What every programmer should know about memory 阅读笔记(6.4)</title><link>http://blog.sina.com.cn/s/blog_5383a9420100rpuh.html</link><description>&lt;div&gt;http://lwn.net/Articles/256433/&lt;/DIV&gt;
&lt;div&gt;&lt;br /&gt;&lt;/DIV&gt;
&lt;div&gt;6.4 Multi-Thread Optimizations&lt;/DIV&gt;
&lt;div&gt;三个方面比较重要 一致性 原子性 带宽&lt;/DIV&gt;
&lt;div&gt;&lt;br /&gt;&lt;/DIV&gt;
&lt;div&gt;&lt;br /&gt;&lt;/DIV&gt;
&lt;div&gt;6.4.1 Concurrency Optimizations&lt;/DIV&gt;
&lt;div&gt;为了保持cache一致性 不同芯片的多线程写同一地址会效率差 单个芯片多core因为cache共享就会好很多&lt;/DIV&gt;
&lt;div&gt;&lt;br /&gt;&lt;/DIV&gt;
&lt;div&gt;优化一致性的问题的核心思路是将一致性要求不同的变量放入不同的cache line&lt;/DIV&gt;
&lt;div&gt;&lt;br /&gt;&lt;/DIV&gt;
&lt;div&gt;优化方法&lt;/DIV&gt;
&lt;div&gt;方法一 读写变量和初始化后只读变量分入不同section（gcc对const变量会自动这么做）
使他们在内存和cache上分开 如果可以&lt;/DIV&gt;
&lt;div&gt;还建议将读多写少变量分入单独section&lt;/DIV&gt;
&lt;div&gt;&lt;br /&gt;&lt;/DIV&gt;
&lt;div&gt;方法二 将经常被同时访问的变量放入同一structure确保他们在内存结构上在一起&lt;/DIV&gt;
&lt;div&gt;&lt;br /&gt;&lt;/DIV&gt;
&lt;div&gt;方法三 将经常被不同线程写的变量放入同一structure确保他们在内存结构上在一起&lt;/DIV&gt;
&lt;div&gt;&lt;br /&gt;&lt;/DIV&gt;
&lt;div&gt;方法二 方法三可配合__attribute__((aligned(l1 cache line
size)))确保全部变量在一个cache line&lt;/DIV&gt;
&lt;div&gt;&lt;br /&gt;&lt;/DIV&gt;
&lt;div&gt;方法四 如果一个变量被多个线程分别使用 并且无一致性需求 可用__thread将变量放入tls&lt;/DIV&gt;
&lt;div&gt;&lt;br /&gt;&lt;/DIV&gt;
&lt;div&gt;&lt;br /&gt;&lt;/DIV&gt;
&lt;div&gt;6.4.2 Atomicity Optimizations&lt;/DIV&gt;
&lt;div&gt;主要介绍原子内存操作&lt;/DIV&gt;
&lt;div&gt;&lt;br /&gt;&lt;/DIV&gt;
&lt;div&gt;&lt;br /&gt;&lt;/DIV&gt;
&lt;div&gt;6.4.3 Bandwidth Considerations&lt;/DIV&gt;
&lt;div&gt;每个芯片连接内存都有一个最大带宽 而其会被芯片中的core和硬线程共享&lt;/DIV&gt;
&lt;div&gt;多个芯片连接内存的方式可能也是共享的&lt;/DIV&gt;
&lt;div&gt;所以效率也受到带宽的影响&lt;/DIV&gt;
&lt;div&gt;&lt;br /&gt;&lt;/DIV&gt;
&lt;div&gt;比较新机器的performance measurement counters可以探测这个问题&lt;/DIV&gt;
&lt;div&gt;&lt;br /&gt;&lt;/DIV&gt;
&lt;div&gt;方法一 买更快的机器 在带宽问题只能在部分机器出现 且换新机器比重写问题程序便宜的时候 这是个可用的方法&lt;/DIV&gt;
&lt;div&gt;&lt;br /&gt;&lt;/DIV&gt;
&lt;div&gt;方法二 如果几个线程经常访问同样的数据 将同一进程的几个线程放在有cache共享的几个core上&lt;/DIV&gt;
&lt;div&gt;&lt;br /&gt;&lt;/DIV&gt;
&lt;div&gt;方法三 如果几个线程经常访问不同的数据 不要将他们放入同一个core(我认为cache共享的几个core上)
否则易引起cache冲突&lt;/DIV&gt;
&lt;div&gt;&lt;br /&gt;&lt;/DIV&gt;
&lt;div&gt;文中介绍了一些控制线程在哪个core上运行的接口&lt;/DIV&gt;
&lt;div&gt;&lt;br /&gt;&lt;/DIV&gt;
&lt;div&gt;方法二 方法三是有冲突的 所以使用时务必分析好当前面对的问题 并作实验&lt;/DIV&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/571577675/teawater/feedsky/s.gif?r=http://blog.sina.com.cn/s/blog_5383a9420100rpuh.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>技术</category><pubDate>Mon, 16 May 2011 09:18:36 +0800</pubDate><author>冒充另类</author><comments>http://blog.sina.com.cn/s/blog_5383a9420100rpuh.html#comment</comments><guid isPermaLink="false">http://blog.sina.com.cn/s/blog_5383a9420100rpuh.html</guid><dc:creator>冒充另类</dc:creator><fs:srclink>http://blog.sina.com.cn/s/blog_5383a9420100rpuh.html</fs:srclink><fs:srcfeed>http://blog.sina.com.cn/myblog/index_rss.php?uid=1401137474</fs:srcfeed><fs:itemid>feedsky/teawater/~1470330/571577675/1229119</fs:itemid></item><item><title>What every programmer should know about memory 阅读笔记(6.3)</title><link>http://blog.sina.com.cn/s/blog_5383a9420100r9nf.html</link><description>&lt;div&gt;http://lwn.net/Articles/255364/&lt;/DIV&gt;
&lt;div&gt;6.3 Prefetching&lt;/DIV&gt;
&lt;div&gt;6.3.1 Hardware Prefetching&lt;/DIV&gt;
&lt;div&gt;两次或者更多次的cache miss才会引起prefetch 因为CPU有随机访问引起cache miss的情况
比如访问一个全局变量 如果这样也prefetch会影响效率&lt;/DIV&gt;
&lt;div&gt;一个CPU中会有多个prefetch unit进行prefetch
高级的cache的unit可能多个core共享&lt;/DIV&gt;
&lt;div&gt;prefetch不能越过一个页 因为可能引起page fault或者fetch一个并不需要的页&lt;/DIV&gt;
&lt;div&gt;在不需要的时候引起prefetch 需要调整程序结构才能解决 在指令中插入未定义指令是一种解决方法&lt;/DIV&gt;
&lt;div&gt;体系结构提供全部或者部分关闭prefetch&lt;/DIV&gt;
&lt;div&gt;&lt;br /&gt;&lt;/DIV&gt;
&lt;div&gt;&lt;br /&gt;&lt;/DIV&gt;
&lt;div&gt;6.3.2 Software Prefetching&lt;/DIV&gt;
&lt;div&gt;#include &amp;lt;xmmintrin.h&amp;gt;&lt;/DIV&gt;
&lt;div&gt;enum _mm_hint&lt;/DIV&gt;
&lt;div&gt;{&lt;/DIV&gt;
&lt;div&gt;&amp;nbsp; _MM_HINT_T0 = 3,&lt;/DIV&gt;
&lt;div&gt;&amp;nbsp; _MM_HINT_T1 = 2,&lt;/DIV&gt;
&lt;div&gt;&amp;nbsp; _MM_HINT_T2 = 1,&lt;/DIV&gt;
&lt;div&gt;&amp;nbsp; _MM_HINT_NTA = 0&lt;/DIV&gt;
&lt;div&gt;};&lt;/DIV&gt;
&lt;div&gt;void _mm_prefetch(void *p, enum _mm_hint h);&lt;/DIV&gt;
&lt;div&gt;x86系列可用上面函数生成prefetch指令&lt;/DIV&gt;
&lt;div&gt;_MM_HINT_T0 = 3, _MM_HINT_T1 = 2, _MM_HINT_T2 = 1, 就是将内存取到1 2
3级cache&lt;/DIV&gt;
&lt;div&gt;要注意第一每个芯片可能对其实现不同 第二 一般使用MM_HINT_T0 但是如果数据量较大可用另两个选项&lt;/DIV&gt;
&lt;div&gt;_MM_HINT_NTA的NTA是non-temporal access(原文在这里写错了）的缩写 当使用这个选项的时候
数据将被装入l1 但是当这个cache要装入其他数据的时候 原来的数据将不会被存入更高级别的cache
如果有需要数据还要直接写入内存&lt;/DIV&gt;
&lt;div&gt;注意如果数据量很大不要使用这个选项&lt;/DIV&gt;
&lt;div&gt;AMD的CPU提供一种特殊的prefetch指令&lt;/DIV&gt;
&lt;div&gt;直接在程序中增加prefetch代码可能起到作用不大 建议方法是用performance
counters查询程序的cache misses信息 在需要的位置插入prefetch指令&lt;/DIV&gt;
&lt;div&gt;-fprefetch-loop-arrays是GCC提供的编译选项 其将为优化数组循环插入prefetch指令
但是这个选项要小心使用&lt;/DIV&gt;
&lt;div&gt;&lt;br /&gt;&lt;/DIV&gt;
&lt;div&gt;&lt;br /&gt;&lt;/DIV&gt;
&lt;div&gt;6.3.3 Special Kind of Prefetch: Speculation&lt;/DIV&gt;
&lt;div&gt;介绍了IA64下提高乱序执行的Speculative loads&lt;/DIV&gt;
&lt;div&gt;其基本思路是当一个load指令和后面的指令关联 造成无法OOO的时候 将load换成Speculative loads
其在有关联的时候不会生效 这样即使指令关联也可OOO&lt;/DIV&gt;
&lt;div&gt;&lt;br /&gt;&lt;/DIV&gt;
&lt;div&gt;&lt;br /&gt;&lt;/DIV&gt;
&lt;div&gt;6.3.4 Helper Threads&lt;/DIV&gt;
&lt;div&gt;在当前程序中同时做prefetch会增加程序复杂度 而且可能引起l1i的性能问题&lt;/DIV&gt;
&lt;div&gt;可以单独创建一个线程做prefetch 这个线程要跟执行线程在同一core不同的硬线程 这样他们的l2
cache就是共享的&lt;/DIV&gt;
&lt;div&gt;cpu_set_t self; NUMA_cpu_self_current_mask(sizeof(self),
&amp;amp;self); cpu_set_t hts;
NUMA_cpu_level_mask(sizeof(hts), &amp;amp;hts,
sizeof(self), &amp;amp;self, 1);
CPU_XOR(&amp;amp;hts, &amp;amp;hts,
&amp;amp;self);&lt;/DIV&gt;
&lt;div&gt;这个函数可用来取得cache共享的信息&lt;/DIV&gt;
&lt;div&gt;&lt;br /&gt;&lt;/DIV&gt;
&lt;div&gt;&lt;br /&gt;&lt;/DIV&gt;
&lt;div&gt;6.3.5 Direct Cache Access&lt;/DIV&gt;
&lt;div&gt;有一种cache miss是由输入数据造成的 现在的网卡等设备为了提高输入数据的速度都支DMA
数据会不通过CPU直接写入内存&lt;/DIV&gt;
&lt;div&gt;但是这个方式有个问题 有些输入的数据很快就会被CPU处理 比如网卡接到的数据需要被分析类型 这就会产生cache
miss影响处理速度&lt;/DIV&gt;
&lt;div&gt;所以INTEL在他们的芯片中增加了DCA功能 其扩展了网卡到内存控制器的协议 在其中传输数据的时候可以增加DCA标志
当CPU从FSB中看到有DCA标志的数据的时候 其将把这个数据写入CACHE(当然CPU也可以根据情况乎略DCA)&lt;/DIV&gt;
&lt;div&gt;这样就减少了之后CPU处理数据时候的cache miss&lt;/DIV&gt;
&lt;div&gt;&lt;br /&gt;&lt;/DIV&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/571577676/teawater/feedsky/s.gif?r=http://blog.sina.com.cn/s/blog_5383a9420100r9nf.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>技术</category><pubDate>Thu, 05 May 2011 15:45:31 +0800</pubDate><author>冒充另类</author><comments>http://blog.sina.com.cn/s/blog_5383a9420100r9nf.html#comment</comments><guid isPermaLink="false">http://blog.sina.com.cn/s/blog_5383a9420100r9nf.html</guid><dc:creator>冒充另类</dc:creator><fs:srclink>http://blog.sina.com.cn/s/blog_5383a9420100r9nf.html</fs:srclink><fs:srcfeed>http://blog.sina.com.cn/myblog/index_rss.php?uid=1401137474</fs:srcfeed><fs:itemid>feedsky/teawater/~1470330/571577676/1229119</fs:itemid></item><item><title>What every programmer should know about memory 阅读笔记(6.2.4)</title><link>http://blog.sina.com.cn/s/blog_5383a9420100r9ml.html</link><description>&lt;div&gt;http://lwn.net/Articles/255364/&lt;/DIV&gt;
&lt;div&gt;6.2.4 Optimizing TLB Usage&lt;/DIV&gt;
&lt;div&gt;有两种优化tlb的方法&lt;/DIV&gt;
&lt;div&gt;第一 减少程序页数量的使用 这能减少tlb miss&lt;/DIV&gt;
&lt;div&gt;第二 减少必须分配的页目录 提高目录搜索的cache命中率 这依赖于程序使用的虚拟地址&lt;/DIV&gt;
&lt;div&gt;可采取的办法是关闭Address Space Layout Randomization (ASLR)&lt;/DIV&gt;
&lt;div&gt;这个选项为了安全会让程序地址随机分配(gdb调试程序的时候为了帮助复现bug就关闭这个功能)&lt;/DIV&gt;
&lt;div&gt;还有一种方法是mmap的MAP_FIXED选项来分配内存 其可让程序自己设置要分配出内存的地址
但是不推荐使用&amp;nbsp;&lt;/DIV&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/571577677/teawater/feedsky/s.gif?r=http://blog.sina.com.cn/s/blog_5383a9420100r9ml.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>技术</category><pubDate>Thu, 05 May 2011 15:39:46 +0800</pubDate><author>冒充另类</author><comments>http://blog.sina.com.cn/s/blog_5383a9420100r9ml.html#comment</comments><guid isPermaLink="false">http://blog.sina.com.cn/s/blog_5383a9420100r9ml.html</guid><dc:creator>冒充另类</dc:creator><fs:srclink>http://blog.sina.com.cn/s/blog_5383a9420100r9ml.html</fs:srclink><fs:srcfeed>http://blog.sina.com.cn/myblog/index_rss.php?uid=1401137474</fs:srcfeed><fs:itemid>feedsky/teawater/~1470330/571577677/1229119</fs:itemid></item><item><title>What every programmer should know about memory 阅读笔记(6.2.3)</title><link>http://blog.sina.com.cn/s/blog_5383a9420100r9mb.html</link><description>&lt;div&gt;http://lwn.net/Articles/255364/&lt;/DIV&gt;
&lt;div&gt;6.2.3 Optimizing Level 2 and Higher Cache Access&lt;/DIV&gt;
&lt;div&gt;前面章节介绍过的对l1的优化方法也对l2或更高级的cache有效&lt;/DIV&gt;
&lt;div&gt;但是要注意这些cache会和每个core或者硬线程共享 所以对性能的影响的大小会比实际cache的容量要小&lt;/DIV&gt;
&lt;div&gt;l1 cache line的大小通常各平台差不多 即使不同也可以最大的为准 影响比较小
但是更高级别的cache在各平台差异很大 需要程序动态处理&lt;/DIV&gt;
&lt;div&gt;取得cache结构在Linux下可在 /sys/devices/system/cpu/cpu*/cache
中取得相关信息&lt;/DIV&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/571577678/teawater/feedsky/s.gif?r=http://blog.sina.com.cn/s/blog_5383a9420100r9mb.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>技术</category><pubDate>Thu, 05 May 2011 15:38:16 +0800</pubDate><author>冒充另类</author><comments>http://blog.sina.com.cn/s/blog_5383a9420100r9mb.html#comment</comments><guid isPermaLink="false">http://blog.sina.com.cn/s/blog_5383a9420100r9mb.html</guid><dc:creator>冒充另类</dc:creator><fs:srclink>http://blog.sina.com.cn/s/blog_5383a9420100r9mb.html</fs:srclink><fs:srcfeed>http://blog.sina.com.cn/myblog/index_rss.php?uid=1401137474</fs:srcfeed><fs:itemid>feedsky/teawater/~1470330/571577678/1229119</fs:itemid></item><item><title>What every programmer should know about memory 阅读笔记(6.2.2)</title><link>http://blog.sina.com.cn/s/blog_5383a9420100r9m5.html</link><description>&lt;div&gt;http://lwn.net/Articles/255364/&lt;/DIV&gt;
&lt;div&gt;6.2.2 Optimizing Level 1 Instruction Cache Access&lt;/DIV&gt;
&lt;div&gt;尽量减小代码大小，要注意loop unrolling和inlining对代码规模的影响，保持平衡。&lt;/DIV&gt;
&lt;div&gt;比如如果一个函数只调用一次，将其inline就没问题。&lt;/DIV&gt;
&lt;div&gt;&lt;br /&gt;&lt;/DIV&gt;
&lt;div&gt;代码尽量是线性的，减少代码空洞(不需要经常执行的代码块)的存在。&lt;/DIV&gt;
&lt;div&gt;比如一个条件执行代码 条件执行的并不会经常执行 这就会形成空洞。Linux&lt;/DIV&gt;
&lt;div&gt;Kernel中使用了宏likely和unlikely，当使用这2个宏的时候，如果gcc编译选项
-freorder-blocks&lt;/DIV&gt;
&lt;div&gt;(默认包含在-O2中 不包含在-Os中)打开，gcc就会将标记好的代码块移动到函数尾部，从而不产生代码空洞。&lt;/DIV&gt;
&lt;div&gt;还有另一选项 -freorder-blocks-and-partition 但是有使用限制，其不能和exception
handling 一起使用。&lt;/DIV&gt;
&lt;div&gt;&lt;br /&gt;&lt;/DIV&gt;
&lt;div&gt;Intel Core 2有一种针对小循环的功能 Loop Stream Detector (LSD)。&lt;/DIV&gt;
&lt;div&gt;如果一个循环has no more than 18 instructions (none of which is a
call to a&lt;/DIV&gt;
&lt;div&gt;subroutine), requires only up to 4 decoder fetches of 16
bytes, has at&lt;/DIV&gt;
&lt;div&gt;most 4 branch instructions, and is executed more than 64&lt;/DIV&gt;
&lt;div&gt;times。这个循环就会被锁进指令队列中，下次再执行这个循环速度就会更快。&lt;/DIV&gt;
&lt;div&gt;一个大循环中的小循环，即使没有这个功能，执行速度也会快一些。&lt;/DIV&gt;
&lt;div&gt;&lt;br /&gt;&lt;/DIV&gt;
&lt;div&gt;代码尽量对齐。对各种对齐问题，汇编器提供了.align伪指令来处理这种问题。&lt;/DIV&gt;
&lt;div&gt;函数头的对齐。gcc
编译选项-falign-functions=N，函数都将以N对齐。如果一个小函数碰到一个很大的N，这就会造成浪费，对一个很少执行的函数，这也是浪费。后一种情况经常发生在库中，一个库会包行常用的函数和不常用的函数。一个正确的N的选择可以提高程序的效率。-fno-align-functions可以关闭这个选项。&lt;/DIV&gt;
&lt;div&gt;基本块的对齐。gcc编译选项-falign-jumps=N，和上面的参数有同样的问题。&lt;/DIV&gt;
&lt;div&gt;循环的对齐。gcc编译选项-falign-loops=N，和上面的参数有同样的问题。&lt;/DIV&gt;
&lt;div&gt;
最后还有一个参数-falign-labels，会影响程序速度，作者建议不要使用。&amp;nbsp;&lt;/DIV&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/571577679/teawater/feedsky/s.gif?r=http://blog.sina.com.cn/s/blog_5383a9420100r9m5.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>技术</category><pubDate>Thu, 05 May 2011 15:37:14 +0800</pubDate><author>冒充另类</author><comments>http://blog.sina.com.cn/s/blog_5383a9420100r9m5.html#comment</comments><guid isPermaLink="false">http://blog.sina.com.cn/s/blog_5383a9420100r9m5.html</guid><dc:creator>冒充另类</dc:creator><fs:srclink>http://blog.sina.com.cn/s/blog_5383a9420100r9m5.html</fs:srclink><fs:srcfeed>http://blog.sina.com.cn/myblog/index_rss.php?uid=1401137474</fs:srcfeed><fs:itemid>feedsky/teawater/~1470330/571577679/1229119</fs:itemid></item><item><title>What every programmer should know about memory 阅读笔记(6.2.1)</title><link>http://blog.sina.com.cn/s/blog_5383a9420100r9m1.html</link><description>&lt;div&gt;http://lwn.net/Articles/255364/&lt;/DIV&gt;
&lt;div&gt;6.2.1 Optimizing Level 1 Data Cache Access&lt;/DIV&gt;
&lt;div&gt;大块读写时尽量将非顺序读写转化成顺序读写&lt;/DIV&gt;
&lt;div&gt;而每次内存操作可以集中于一cache line，从而提高速度&lt;/DIV&gt;
&lt;div&gt;取得当前系统cache line长度的命令为 getconf LEVEL1_DCACHE_LINESIZE&lt;/DIV&gt;
&lt;div&gt;这样在编译当前系统执行的程序的时候 可以用 gcc -DCLS=$(getconf
LEVEL1_DCACHE_LINESIZE)&lt;/DIV&gt;
&lt;div&gt;将cache line长度传递到程序中&lt;/DIV&gt;
&lt;div&gt;当然大块数据读写还是SIMD指令速度最快&lt;/DIV&gt;
&lt;div&gt;上面提速的原理是提高cache 被污染前的再次使用机率&lt;/DIV&gt;
&lt;div&gt;&lt;br /&gt;&lt;/DIV&gt;
&lt;div&gt;pahole program (see[dwarves])能显示一个struct 在cache 中的分布
文中建议可根据需要压缩struct&lt;/DIV&gt;
&lt;div&gt;尽量让数据在同一cache line 同时按照访问顺序设置元素顺序 适当时可将一个struct 分成多个&lt;/DIV&gt;
&lt;div&gt;需要时候可用posix_memalign分配cache line 对齐的内存&lt;/DIV&gt;
&lt;div&gt;struct strtype {&lt;/DIV&gt;
&lt;div&gt;...members...&lt;/DIV&gt;
&lt;div&gt;} __attribute((aligned(64)));&lt;/DIV&gt;
&lt;div&gt;标记内存对齐到多少&lt;/DIV&gt;
&lt;div&gt;&lt;br /&gt;&lt;/DIV&gt;
&lt;div&gt;当使用variable length arrays (VLAs) 或者 alloca&lt;/DIV&gt;
&lt;div&gt;
的时候，为了保证frame的对齐，会增加很多相关代码，影响程序速度。这个我自己写了些代码看了下，确实增加了很多代码，如果是调用次数很多的函数，建议还是去掉vlas和alloca。&lt;/DIV&gt;
&lt;div&gt;&lt;br /&gt;&lt;/DIV&gt;
&lt;div&gt;gcc支持一个frame对齐参数：&lt;/DIV&gt;
&lt;div&gt;-mpreferred-stack-boundary=2&lt;/DIV&gt;
&lt;div&gt;使用这个参数的时候，frame将以2的n次方对齐。所以上面让gcc生成的代码从默认的16字节切换为4字节。&lt;/DIV&gt;
&lt;div&gt;作者认为在编译x86程序的时候设置这个参数为2，可以减少stack的使用并提高代码执行速度。(我没有测试过)&lt;/DIV&gt;
&lt;div&gt;其他ARCH都不能设置为2，即使是x86_64。&amp;nbsp;&lt;/DIV&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/571577680/teawater/feedsky/s.gif?r=http://blog.sina.com.cn/s/blog_5383a9420100r9m1.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>技术</category><pubDate>Thu, 05 May 2011 15:35:46 +0800</pubDate><author>冒充另类</author><comments>http://blog.sina.com.cn/s/blog_5383a9420100r9m1.html#comment</comments><guid isPermaLink="false">http://blog.sina.com.cn/s/blog_5383a9420100r9m1.html</guid><dc:creator>冒充另类</dc:creator><fs:srclink>http://blog.sina.com.cn/s/blog_5383a9420100r9m1.html</fs:srclink><fs:srcfeed>http://blog.sina.com.cn/myblog/index_rss.php?uid=1401137474</fs:srcfeed><fs:itemid>feedsky/teawater/~1470330/571577680/1229119</fs:itemid></item></channel></rss>
