Posts tagged cache

Traffic Server 反向代理缓存

1

作为反向代理缓存,Traffic Server为源服务器服务请求。Traffic Server被配置成对客户端而言是正常的源服务器的方式。

理解反向代理缓存

通过前向代理缓存,Traffic Server为客户端处理发往远距离源服务器的web请求。反向代理缓存(又称服务器加速或虚拟主机托管)和前向代理不同,因为Traffic Server作为源服务器的代理缓存并存储内容。Traffic Server被配置为用户直接连接的源服务器(典型的用法是将源服务器的主机名解析到Traffic Server)。

反向代理解决方案

有多种方式使用Traffic Server作为一个反向代理。下面是一些例子场景。
(更多…)

Traffic Server HTTP代理缓存

0

Web代理缓存可以用来存储高频访问的web对象(比如文档、图片等)以及为用户的请求提供这些信息。它在改善网络性能的同时,也为其他的任务空出了Internet的带宽。

理解HTTP Web代理缓存

Internet用户向遍布全球的web服务器发送请求。缓存服务器必须扮演成一个web代理服务器才能服务这些请求。对web代理服务器收到对web对象的请求,它可以选择服务这些请求或者将它们传递给源服务器(包含被请求信息源文件的服务器)。Traffic Server代理支持直接代理缓存方式,这种方式需要客户端软件配置成直接发送请求给Traffic Server代理。下面大概描述一下Traffic Server如何服务用户的请求。

1.      Traffic Server收到一个用户对web对象的请求。

2.      Traffic Server尝试着在其对象数据库(缓存)中用被请求对象的地址来定位该对象。
3.      如果对象在缓存中,Traffic Server会检查该对象是否过期,如果对象没有过期,Traffic Server以缓冲命中的方式用该对象来服务用户(见下图)。

缓存命中

4.      如果缓存中的数据已经过期,Traffic Server连接源服务器并检查该对象是否仍然可用(重新生效)。如果生效,Traffic Server直接发送缓存中的对象给用户。

5.      如果对象没有在缓存中(缓存未命中)或者源服务器显示缓存中的对象已经失效,Traffic Server会从源服务器重新获取该对象。该对象会同时发送给用户以及Traffic Server的本地缓存(见下图)。由于本地已经有了最新的缓存,后期对该对象的请求将会被更快的服务。

缓存未命中

实际的缓存会比上面的概述复杂的多。尤其是概述中没有讲述Traffic Server如何确保对象有效,正确地服务不同的HTTP版本以及处理那些对不能或不该被缓存的对象的请求。下面的部门将更细致地讨论这些问题。

CPU拓扑结构的调查

1

在做多核程序的时候(比如Erlang程序),我们需要了解cpu的拓扑结构, 了解logic CPU和物理的CPU的映射关系,以及了解CPU的内部的硬件参数,比如说
L1,L2 cache的大小等信息。

Linux下的/proc/cpuinfo提供了相应的信息,但是比较不全面。 /sys/devices/system/cpu/也提供了topology结构但是比较难解读。

很多时候我们需要更专业的工具了。intel提供了这样的救助。参见: http://software.intel.com/en-us/articles/intel-64-architecture-processor-topology-enumeration/

下载下来编译执行就好。

[admin@my174 cpu-topology]$ ./cpu_topology64.out
(更多…)

blocking technique介绍

2

随着硬件技术的发展, CPU也越来越强大的。普通的服务器装配的Intel(R) Xeon(R) CPU E5520有4个core,每个core有32KL1D, 32KL1I, 256KL2,这些core还共享8M的L3。这些cache对提高系统的性能非常帮助, 因为L1的性能比主村高2个数量级。但是我们也看到L1 cache太小了,而且对程序员来讲是透明的,我们不知道它的存在。

那么我们的程序如何利用这些硬件设施呢。 设想下,如果你的4个core能同时工作,每个core又在充分利用自己的L1,L2, 同时L3还充满备用数据,那么这个提速是可以想象的到的。

这时候我们需要blocking technique技术: (更多…)

Go to Top