跳转至

2022

Pytorch 学习回顾--线性回归

生成数据集

我们可以调用框架中现有的 API 来读取数据。我们将featureslabels作为 API 的参数传递,并在实例化数据迭代器对象时指定batch_size。此外,布尔值is_train表示是否希望数据迭代器对象在每个迭代周期内打乱数据。

def load_array(data_arrays, batch_size, is_train=True): 
    """构造一个 PyTorch 数据迭代器。"""
    dataset = data.TensorDataset(*data_arrays)
    return data.DataLoader(dataset, batch_size, shuffle=is_train)
batch_size = 10
data_iter = load_array((features, labels), batch_size)

如何在服务端启用 BBR 拥塞控制算法

2016 年底,Google 发表了一篇优化 TCP 传输算法的文章,极大的提高了 TCP 的 throughput(吞吐量),并且已经集成到 Linux 4.9 内核中。这个算法就是 BBR(Bottleneck Bandwidth and Round-trip propagation time)。

作为一个软件源镜像站,启用 BBR 将显著提升服务器的带宽利用率。但由于服务器所用的 CentOS 内核版本过低,我们需要先升级系统内核。

如何在 Nginx 上支持 HTTP/2

HTTP/2(原名HTTP 2.0)即超文本传输协议第二版,使用于万维网。HTTP/2 主要基于 SPDY 协议,通过对 HTTP 头字段进行数据压缩、对数据传输采用多路复用和增加服务端推送等举措,来减少网络延迟,提高客户端的页面加载速度。HTTP/2 没有改动 HTTP 的应用语义,仍然使用 HTTP 的请求方法、状态码和头字段等规则,它主要修改了 HTTP 的报文传输格式,通过引入二进制分帧实现性能的提升。

高性能计算 - 基准测试程序 Linpack(HPL)

自通用计算机时代开始以来,就出现了各种用于评估计算机性能的基准测试程序。这些程序的性质通常反映了构建计算机的预期目的,同时还提供了可以与制造商的理论性能估计进行比较的经验性能测量。

高性能计算中最广泛使用的基准之一就是 Linpack 基准,它的起源是一个线性代数运算包,后来被 Lapack 库和其他竞争对手取代。但 Linpack 的基准测试程序在以后的日子里继续发挥强大的影响力。

HPL,即 (High-Performance Linpack) 是早期 Linpack 的衍生产品,其高度并行化的设计,使得它用于评估 TOP500 超级计算机的性能排名。

QLUT 镜像站的日志监控及预警方案

十分意外镜像站用户增长速度如此之快,面对日均五万左右的用户量,服务器频繁出现各种性能问题。在故障排查的过程中,我意识到服务器需要一套成熟、完整、可靠的日志监控及预警方案。

先前长期使用 goaccess 静态分析 Nginx 的日志,具有滞后性。只能用于单纯的分析总结一段时间内的网站流量状况,而无法做到实时监看服务状态和运行数据。

既然是开源镜像站,那么我们就需要把目光投向开源社区。

云场景下的网络 QoS

公共的网络链路总会不可避免的产生带宽抢占的问题,我们通常使用 QoS 技术保障大多数用户的服务质量。

img

一台服务器能控制的只有出方向的 QoS,通过 Shaping 将出站流量整形,至于入栈流量只能通过 Policy 决定丢弃哪一部分数据包。

TCP 状态机

一个 TCP 连接在它的生命周期内会有不同的状态。

下图说明了 TCP 连接可能会有的状态,以及基于事件的状态转换。事件中有的是应用程序的操作,有的是接收到了网络发过来的请求。

a21r1-84lt6.jpg

TCP 状态及其描述如下表。

状态 描述
LISTEN 等待来自远程 TCP 应用程序的请求
SYN_SENT 发送连接请求后等待来自远程端点的确认。TCP 第一次握手后客户端所处的状态
SYN-RECEIVED 该端点已经接收到连接请求并发送确认。该端点正在等待最终确认。TCP 第二次握手后服务端所处的状态
ESTABLISHED 代表连接已经建立起来了。这是连接数据传输阶段的正常状态
FIN_WAIT_1 等待来自远程 TCP 的终止连接请求或终止请求的确认
FIN_WAIT_2 在此端点发送终止连接请求后,等待来自远程 TCP 的连接终止请求
CLOSE_WAIT 该端点已经收到来自远程端点的关闭请求,此 TCP 正在等待本地应用程序的连接终止请求
CLOSING 等待来自远程 TCP 的连接终止请求确认
LAST_ACK 等待先前发送到远程 TCP 的连接终止请求的确认
TIME_WAIT 等待足够的时间来确保远程 TCP 接收到其连接终止请求的确认