InfraPub 为您找到相关结果 417

聊聊很重要的内核技术eBPF

(DFS),以确保程序完成并且代码不包含危险路径。这意味着它将遍历图的每个分支,一直到分支的底部,以确保没有递归循环。 这些是验证器在第一次检查期间可能拒绝您的代码的情形,要求有以下几个方面: 该程序不包含控制循环。为确保程序不会陷入无限循环,验证程序会拒绝任何类型的控制循环。已经提出了在BPF程序中允许循环的建议,但是截撰写本文时,没有一个被采用。该程序不会尝试执行超过内核允许的最大指令数的指令。此时,可执行的最大指令数为4,096。此限制是为了防止BPF永远运行。在第3章,我们讨论如何嵌套不同的BPF程序,以安全的方式解决此限制。该程序不包含任何无法访问的指令,例如从未执行过的条件或功能。这样可以防止在VM中加载无效代码,这也会延迟BPF程序的终止。该程序不会尝试越界。 验证者执行的第二项检...阅读全文

博文 2020-08-16 11:08:44 debian.cn

HTML 5.1 — 14 项新增特性及使用案例

让你可以指定一个多个可选的图像来源,对应于不同的像素分辨率。它将允许浏览器根据用户设备的不同选择合适质量的实现来进行显示。例如,对于使用网络比较慢的动设备的用户,显示一张低分辨率的图片会比较好。 你可以使用 srcset 属性并且带上它自有的 x 修饰符来描述每一个图片的像素比例, 如果用户的像素比例等于 3,就会显示 high-res 这张图片。 除了像素比例之外,你也可以选择使用 w 修饰符来指定不同尺寸大小的图片。在如下示例中,high-res 图片被定义成在...阅读全文

博文 2021-01-28 17:50:20 debian.cn

Golang 操作 Kafka 样例

率最低。 最后要注意的是,如果往不存在的topic写数据,kafka会⾃动创建topic,partition和replication的数量 默认配置都是1。 2.1.5. Topic和数据⽇志 topic 是同⼀类别的消息记录(record)的集合。在Kafka中,⼀个主题通常有多个订阅者。对于每个 主题,Kafka集群维护了⼀个分区数据⽇志⽂件结构如下: 每个partition都是⼀个有序并且不可变的消息记录集合。当新的数据写⼊时,就被追加到partition的末 尾。在每个partition中,每条消息都会被分配⼀个顺序的唯⼀标识,这个标识被称为offset,即偏 量。注意,Kafka只保证在同⼀个partition内部消息是有序的,在不同partition之间,并不能保证消息 有序...阅读全文

博文 2023-01-10 13:46:09 掘金

Docker 核心原理

vethxxx 这样的名字命名,从而将宿主机上的所有容器都连接到这个内部网络上。虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中。 容器访问外部网络 请求通过 veth pair 到达 docker0 处,docker0 网桥开启了IP forwarding功能,将请求发送宿主机eth0; 宿主机处理请求时,使用 SNAT 规则,将源地址替换成了宿主机 ip,然后把报文转发出去 外部访问容器 docker run -p 时,docker 实际是在 iptables 做了DNAT规则,实现端口转发功能。 1 2 3 4 5 # iptables -t nat -L Chain DOCKER (2 references) target prot opt source...阅读全文

博文 2021-02-25 09:14:23 lxkaka

DPDK Graph Pipeline 框架简介与实现原理

DPDK 全称为 Data Plane Development Kit ,是近年来在高速网络通信行业中炙手可热的一种网络报文处理加速框架。DPDK 从十年前诞生直发展到今天已经可以支持业界主流的高端网卡以及各类加速硬件设备,同时也支持主流的各个CPU 体系结构(可以运行于 X86, Arm, Power 等平台)。同时也可以运行于 Linux/FreeBsd/Windows 等主流操作系统之上。DPDK因为其优异的性能指标被广泛的应用于网关/负载均衡/SDN/虚拟交换的各个场景。 本文主要介绍 DPDK 中的 libgraph 设计思想以及实现,libgraph 的设计思想源自于开源项目 Vector Packet Processor(VPP)。VPP 中的向量包处理优化方案是...阅读全文

博文 2023-02-09 07:13:55 掘金

Debian 9 使用kubeadm创建 k8s 集群(上)

正确运行工作负载。 先决条件 本地Linux / macOS / BSD计算机上的SSH密钥对。 如果您之前没有使用过SSH密钥,可以按照如何在本地计算机上设置SSH密钥的说明来学习如何设置它们。运行Debian 9的三台服务器,每台少有2GB RAM和2个vCPU。 您应该能够以SSH密钥对的root用户身份SSH到每个服务器。Ansible安装在您的本地计算机上。 有关安装说明,请按照Ansible官方安装文档进行操作 。熟悉Ansible Playbook。 有关查看,请查看配置管理101:编写Ansible Playbooks 。了解如何从Docker镜像启动容器。 如果需要复习,请参阅如何在Debian 9上安装和使用Docker的 “第5步 - 运行Docker容器”。 第1步...阅读全文

博文 2019-05-13 22:47:39 debian.cn

如何使用 journalctl 清理 journal 日志

件。 换句话说, 日志目录中不应该存在后缀名不等于 ".journal" 或 ".journal~" 的文件, 因为这些文件永远不会被清理。 SystemMaxUse= 与 RuntimeMaxUse= 限制全部日志文件加在一起最多可以占用多少空间。 SystemKeepFree= 与 RuntimeKeepFree= 表示除日志文件之外,少保留多少空间给其他用途。 systemd-journald 会同时考虑这两个因素, 并且尽量限制日志文件的总大小,以同时满足这两个限制。 SystemMaxUse= 与 RuntimeMaxUse= 的默认值是10%空间与4G空间两者中的较小者; SystemKeepFree= 与 RuntimeKeepFree= 的默认值是15%空间与4G空间两者中...阅读全文

博文 2021-02-05 15:43:28 博客园

如何读懂火焰图?+ 实例讲解程序性能优化 - xuxh120

的文本文件。如果一台服务器有16个 CPU,每秒抽样99次,持续30秒,就得到 47,520 个调用栈,长达几十万甚上百万行。 为了便于阅读,perf record命令可以统计每个调用栈出现的百分比,然后从高到低排列。 $ sudo perf report -n --stdio 这个结果还是不易读,所以才有了火焰图。 二、火焰图的含义 火焰图是基于 perf 结果产生的 SVG 图片,用来展示 CPU 的调用栈。 y 轴表示调用栈,每一层都是一个函数。调用栈越深,火焰就越高,顶部就是正在执行的函数,下方都是它的父函数。 x 轴表示抽样数,如果一个函数在 x 轴占据的宽度越宽,就表示它被抽到的次数多,即执行的时间长。注意,x 轴不代表时间,而是所有的调用栈合并后,按字母顺序排列的。 火焰图就...阅读全文

博文 2022-03-11 10:05:09 博客园

influxdb内存消耗分析及性能优化【探索篇】

influxdb在内存中引入了大量文件,在内存充足时,会占用较多的空间,用于提高程序读取性能。5.SMP与NUMA?cpu硬件体系架构可以分为:SMP(Symmetric Multi-Processor)/UMA(Uniform Memory Access)模式SMP架构,所有的CPU争用一个总线来访问所有内存,优点是资源共享,而缺点是总线争用激烈。 实验证明,SMP服务器CPU利用率最好的情况是24个CPUNUMA(Non-Uniform Memory Access)模式NUMA架构引入了node和distance的概念。对于CPU和内存这两种最宝贵的硬件资源, NUMA用近乎严格的方式划分了所属的资源组(node),而每个资源组内的CPU和内存是几乎相等。在influxdb服务器上,查看当前cpu及...阅读全文

博文 2021-10-27 16:06:30 知乎

在 Kubernetes 上扩展 TensorFlow 模型

点通信。在 Kubernetes 中, MPI Operator 可用于实现 Allreduce 式的 TensorFlow 模型同步训练。 ## TensorFlow 模型在 Kubernetes 上的可扩展服务 由于处理客户端对推理服务的请求是一项非常耗时耗力的任务,因此可扩展服务对于机器学习工作负载的生产部署关重要。在这种情况下,部署的模型应该能够扩展到多个副本,并为多个并发的请求提供服务。 Kubeflow 支持 TensorFlow 模型的几种服务选项。这里要注意以下几点: - **TFServing** 是 TFX Serving 模块的 Kubeflow 实现。通过 TFServing,你可以创建机器学习模型 REST API,并提供许多有用的功能,包括服务交付、自动生命周期...阅读全文

Debian 9 使用kubeadm创建 k8s 集群(下)

Kubernetes对象的关系。 豆荚在Kubernetes中无处不在,因此了解它们将有助于您的工作。部署概述 - 提供部署概述 。 了解部署控制器如何工作非常有用,因为它们在无状态应用程序中经常用于扩展和不健康应用程序的自动修复。服务概述 - 涵盖服务,Kubernetes集群中另一个常用对象。 了解服务类型及其选项对于运行无状态和有状态应用程序关重要。 您可以研究的其他重要概念是Volumes , Ingresses和Secrets ,所有这些在部署生产应用程序时都会派上用场。 Kubernetes提供了许多功能和特性。 Kubernetes官方文档是了解概念,查找特定于任务的指南以及查找各种对象的API参考的最佳位置。...阅读全文

博文 2019-05-13 22:57:41 debian.cn

HTTP状态码详解

择该如何进行。 如果服务器本身已经有了首选的回馈选择,那么在 Location 中应当指明这个回馈的 URI;浏览器可能会将这个 Location 值作为自动重定向的地址。此外,除非额外指定,否则这个响应也是可缓存的。 301 被请求的资源已永久动到新位置,并且将来任何对此资源的引用都应该使用本响应返回的若干个 URI 之一。如果可能,拥有链接编辑功能的客户端应当自动把请求的地址修改为从服务器反馈回来的地址。除非额外指定,否则这个响应也是可缓存的。 新的永久性的 URI 应当在响应的 Location 域中返回。除非这是一个 HEAD 请求,否则响应的实体中应当包含指向新的 URI 的超链接及简短说明。 如果这不是一个 GET 或者 HEAD 请求,因此浏览器禁止自动进行重定向,除非得到用...阅读全文

博文 2021-01-28 17:50:11 debian.cn

OpenAI掌门人Sam Altman:AI的下一个发展阶段_OneFlow

聊天机器人更加成熟,几乎可以达到人类水平。聊天机器人可以用于医疗服务行业,提供咨询和教育服务,这方面将能催生出大型企业。 我相信,不久之后会出现多模态模型,这又将打开新局面。现在,人们可以直接用自然语言命令计算机为你完成你想做的工作,例如DALL-E图像生成工具和Copilot编程工具,都是用户向它们输入自然语言描述,然后工具自动生成用户想要的东西,用户还可以不断迭代修改自己的描述,直工具给出满意的输出。 类似的AI应用方式会成为大趋势,可以孕育出许多大型企业。强大的AI模型可以成为孵化各种AI应用的平台,就像智能手机的出现催生出众多APP一样,它们的共同点都是可以制造无数的商业机会。 Reid Hoffman:既然大家都可以通过API使用大型模型,作为AI企业,怎样才能使自己脱颖而出,开...阅读全文

博文 2023-02-04 15:55:11 CSDN博客

深入了解Docker背后的namespace技术

+ 22:50 0:00 ps aux 在我们预期中ps aux的PID是1,或少看不到任何从其他父进程进来的 pid 。为什么会这样?我们孵化的进程仍然会有一个来自父进程的/proc视图,也就是说 /proc挂载在主机系统上。那么如何我们解决这个问题?我们如何确保我们新的进程只可以查看在它所在的namespace内的pid呢? 我们可以通过重新挂载/proc 开始。 因为我们会用mount来处理,我们可以借此机会使用从MNT namespace所了解到的内容,并结合PID namespace,以确保我们不会将其与自己的主机系统的 /proc搞混。 我们可以通过包含为PID namespace设置的clone flag和为MNT namespace设置的clone flag来启动。他们看起来像是...阅读全文

博文 2015-05-17 10:03:00 debian.cn

深度解密基于 eBPF 的 Kubernetes 问题排查全景图

一、当 Kubernetes 成为云原生事实标准,可观测性挑战随之而来当前,云原生技术以容器技术为基础,通过标准可扩展的调度、网络、存储、容器运行时接口来提供基础设施。同时,通过标准可扩展的声明式资源和控制器来提供运维能力,两层标准化推动了开发与运维关注点分离,各领域进一步提升规模化和专业化,达到成本、效率、稳定性的全面优化。在这样的大技术背景下,越来越多的公司引入了云原生技术来开发、运维业务应用。正因为云原生技术带来了越发纷繁复杂的可能性,业务应用出现了微服务众多、多语言开发、多通信协议的鲜明特征。同时,云原生技术本身将复杂度下,给可观测性带来了更多挑战:​1、混沌的微服务架构,多语言和多网络协议混杂业务架构因为分工问题,容易出现服务数量多,调用协议和关系非常复杂的现象,导致的常见问题...阅读全文

博文 2022-03-21 09:11:51 joseph

Apollo 配置中心简单介绍

、Thread Pool Size、Buffer Size、Request Timeout、Feature Switch、Server Urls等。配置伴随应用的整个生命周期 配置贯穿于应用的整个生命周期,应用在启动时通过读取配置来初始化,在运行时根据配置调整行为。配置可以有多种加载方式 配置也有很多种加载方式,常见的有程序内部hard code,配置文件,环境变量,启动参数,基于数据库等配置需要治理 权限控制 由于配置能改变程序的行为,不正确的配置甚能引起灾难,所以对配置的修改必须有比较完善的权限控制不同环境、集群配置管理 同一份程序在不同的环境(开发,测试,生产)、不同的集群(如不同的数据中心)经常需要有不同的配置,所以需要有完善的环境、集群配置管理框架类组件配置管理 还有一类比较特殊的配置...阅读全文

博文 2021-04-09 17:53:51 CSDN

kubectl 创建 Pod 背后到底发生了什么?—探寻 Kubectl 创建 Pod 的原理

PodFailed,并且将该 Pod 从该节点上驱逐出去。例如当你创建一个 Job 时,如果 Pod 失败重试的时间超过了 spec.activeDeadlineSeconds 设置的值,就会将 Pod 从该节点驱逐出去。 接下来,Pod 的 Phase 值由 init 容器 和应用容器的状态共同来决定。因为目前容器还没有启动,容器被视为处于等待阶段,如果 Pod 中少有一个容器处于等待阶段,则其 Phase 值为 Pending。 最后,Pod 的 Condition 字段由 Pod 内所有容器的状态决定。现在我们的容器还没有被容器运行时创建,所以 PodReady 的状态被设置为 False。可以通过 kubectl 查看: $ kubectl get -o go-template...阅读全文

博文 2022-04-18 16:18:04 CSDN