安装office 2010后,电脑启动变慢,主要是网卡启动很慢 解决方法
到服务中禁用Microsoft .NET Framework NGEN v4.0.30319_X86,理由如下:
安装完VS2010后,默认会安装.Net 4.0的类库,但是这个安装后系统会更新一个补丁,并且开机会自动启动Microsoft .NET Framework NGEN v4.0.30319_X86服务,在xp系统中
会是网络连接延迟大约1分钟才会正常启动,根据官网的说法(http://msdn.microsoft.com/zh-tw/magazine/cc163610.aspx)会提示效能,但是如果不是必须的,还是在服务中将此服务禁用,至少我目前没发现会出现什么问题,但是这个服务开启的话,会让你的网卡启动很慢...
dlopen export dynamic
先看看状况(小心头疼)
client.c 编译得到 client;在 client 的 main 中用 dlopen( "./liba.so", RTLD_LAZY|RTLD_GLOBAL) 打开 liba.so,并调用 liba.so 中的 start 函数;在 liba.so 的 start 函数中通过 dlopen( 0, RTLD_GLOBAL|RTLD_LAZY ) 得到的句柄尝试调用 client 中的 startup_fcn 函数。使用 gcc client.c -o client -ldl 得到的 client 与 gcc -fPIC -shared liba.c -o liba.so 得到的 liba.so 的时候发现 liba.so 无法找到 client 中定义的 startup_fcn 函数。后经 pacman2k 大侠的提醒,发现了 ld 的参数 -E / --export-dynamic。使用 gcc -Wl,-E client.c -o client 重新编译 client 程序之后就可以成功调用了。
关于 -E 参数:
-E
--export-dynamic
When creating a dynamically linked executable, add all symbols to the dynamic symbol table. The
dynamic symbol table is the set of symbols which are visible from dynamic objects at run time.
If you do not use this option, the dynamic symbol table will normally contain only those symbols
which are referenced by some dynamic object mentioned in the link.
If you use "dlopen" to load a dynamic object which needs to refer back to the symbols defined by the
program, rather than some other dynamic object, then you will probably need to use this option when
linking the program itself.
最后一段正说道这种『回调的情况』
关于 RTLD_GLOBAL
经测试,所有 dlopen 均取消 RTLD_GLOBAL 参数之后,仍然运行正常。RTLD_GLOBAL 参数的作用有待考察。
cir+cbs+ebs
注意下单位:
平均速率:向桶中放置令牌的速率,即允许的流的平均速度。通常设置为 CIR(Committed Information Rate,承诺信息速率)。
突发尺寸:令牌桶的容量,即每次突发所允许的最大的流量尺寸。通常设置为CBS(Committed Burst Size,承诺突发尺寸),设置的突发尺寸必须大于最大报文长度。
个人见解举例:CIR=100kbyte/s,CBS=2000kbyte,此时下载速度200kbyte/s.可以假想令牌桶为一水桶,他的容量是 2000L,底部出水口流速200L/S,上部进水口注水速度100L/S,显然入不支出。2000/(200-100)=20S.20秒后桶内水流完。这时出水口的流速变为100L/S。而20秒前,水的流速一直保持200L/S,这就是为什么叫突发了。应用到实际,打开网页时,刚开始需要下载图片,网页文件等,下载速度要求很高,但持续时间不常,这就是突发能解决的实际问题。通过CBS我们即可以控制用户下载小文件高速下载,而大文件,限速下载。纯属个人学习见解,供大家参考,交流。
2、CIR(承诺信息速率)为每秒往令牌桶添加令牌的速度,单位是kbps,注意是bit每秒,不是Byte每秒,如配置qos car outbound carl 1 cir 64,其含义就是对carl队列1在接口出方向配置CIR为64kbps,此时默认CBS为4000(Byte),即令牌桶大小为4000字节,每秒往桶内注入令牌的速率是64kbps,令牌桶就和水桶一样,CIR最多把桶注满,并不会多出。
3、假设一个包,大小是1500字节,如果此时桶内令牌数量是2000字节,那么该数据包通过,令牌数量变成2000-1500=500(字节),如果此时再来一个1000字节的数据包,那么令牌就不够,这个数据包就有可能被丢弃或remark
4、上面只是原理介绍,实际情况是动态变化(一边有令牌注入,一边有数据包转发取令牌)的,需要计算机仿真才能看到令牌桶的动态变化
5、CAR(承诺访问数率)用来限速,比如限制FTP、HTTP、每IP限速,并不用来做流量保证,如VoIP、Video业务优先转发。
QOS的一些基本概念。
CIR=放置令牌到桶内的速度这个是一个平均值单位是bps,即1秒内放的令牌个数。
CBS=令牌桶的尺寸大小
业务流的速度=取令牌的速度
TC=周期性添加令牌的时间间隔cbs/cir=tc
实际中比较常见的有两种实现方式:(1)周期性的添加,添加的时间间隔就是令牌桶的容量与添加速率的比值:T c=CBS/CIR,每次添加的令牌数为CBS 个;
还有种(本次加入令牌的时间-上次加入令牌的时间)XCIR 超额的被丢弃,这种是一次加满没有TC间隔的。TC会增加时延
突发=瞬间消耗桶内所有令牌
EBS=CBS+EBS请不要把EBS和CBS的值设置成一样,否则,超额突发=0最好是大于CBS的2倍,这样允许超额突发
CIR=CBS,EBS=0 则速度就是CIR所约定的,因为CIR是放令牌的速度最终要看CBS是桶大小,这个时候CBS限制了CIR能放的令牌量。
此时业务流量如果持续小于CIR,则会得到CBS的突发量。因为小于CIR是放令牌的速度,业务持续小于CIR,会使得令牌在桶内累计。此时业务如果大于CIR,会因为得不到令牌而被丢弃
CIR>CBS,EBS=0 则速度是桶子的突发尺寸CBS所定义的,此时因为CIR是放置令牌的,但是桶没有CIR所需求的大。那么业务流这个时候只能得到CBS大小的令牌,突发的频率很高,只要业务达到CIR的速度,则每次都会把桶内的令牌消耗完,当然业务流不一定每次都能达到CIR的速度。
CIR<CBS ,EBS=0 则发送的速度是CIR所定义的,但这个时候网络允许突发,即有可能网络会发送到CBS所定义的尺寸,当然一旦突发,桶内的令牌就没有了,这个时候需要等待TC周期,(TC=(CBS+EBS)/CIR),因此可能会增大网络时延,当然这只是突发流量才会。这个时候业务速度如果比CIR小,则可能累计出大于CIR的突发流量。因为会持续向桶内添加令牌,直到超过EBS,最后令牌将被丢弃,所以业务如果不去取令牌,会导致令牌积压,之后业务将得到突发。但是如果业务很平均,则不会导致突发,因为CIR每次放入的令牌,都被用户取掉了,当然业务一般不会很平均,因此CIR注入的令牌也不一定能消耗完每次,这样就看你的令牌桶是否允许业务突发了。
因此得出,推荐配置CBS=CIR EBS大于CBS的2倍 最小值=8000/8=1000B,CBS最小=15000/8/1024=1.8KB,CBS最小刚好大于了MTU的1500字节,因此无论如何都可以发出一个数据包的,如果它小于了1500.EBS此时等于0则可能连一个包都发不出,因此不允许小于1.8KB。CIR的速率如果这个时候大于了CBS,则在1秒内超过CBS桶子的尺寸,将被认为是EBS的,EBS=0,因此直接丢弃了。
CIR=8000 CBS=15000 EBS=0 这样的配置,会得到的结果是速度是1000B/s 允许突发到1800B/S 1秒内超过1800B的包就被丢弃。
推荐CBS=CIR的设置,这样不允许突发虽然,但是业务流速度得到保证。
TC可以用来调节业务的时延,(它是不可以配置的,由CBS/CIR=TC得到)因为它是向CBS桶内加令牌的时间间隔。一个业务最多可以得到的就是CBS的令牌数,不过这个还需要累计,在TC时间内,只能加入CIR所设定的令牌数目,因此想达到CBS的量,可能需要积蓄几轮CIR.
降低TC时间可以增加业务突发次数,这样可以获得小时延。
而业务一般,突发,需要累计否则可能是CBS<CIR时那TC时间很小。
其实业务的速度是靠CIR来限制的,业务的时延是靠TC来调节的,但TC是不允许配置的,因此只有CBS和CIR来控制TC。CBS越大TC越大,业务的突发时延间隔越大。
结论,最好将CBS=cir。