首页
游戏
影视
直播
广播
听书
音乐
图片
更多
看书
微视
主播
统计
友链
留言
关于
论坛
邮件
推荐
我的云盘
我的搜索
我的记录
我的文件
我的图书
我的笔记
我的音乐
我的影视
我的邮件
Search
1
科普:Memory Compiler生成的Register file和SRAM有何区别?
89 阅读
2
virtuoso和empyrean alps模拟仿真和混仿教程
87 阅读
3
在IC617中进行xa+vcs数模混仿
86 阅读
4
vcs debug rtl或者netlist 中的loop
52 阅读
5
文档内容搜索哪家强? 15款文件搜索软件横向评测
42 阅读
默认分类
芯片市场
数字电路
芯片后端
模拟电路
芯片验证
原型与样片验证
算法与架构
DFX与量产封装
PC&Server OS设置
移动OS设置
软件方案
新浪备份
有道备份
登录
Search
标签搜索
python
Docker
vcs
PyQT
STM32
cadence
linux
systemverilog
EDA
Alist
vscode
uos
package
MCU
C
QT
CXL
sed
sv
webdav
bennyhe
累计撰写
344
篇文章
累计收到
31
条评论
首页
栏目
默认分类
芯片市场
数字电路
芯片后端
模拟电路
芯片验证
原型与样片验证
算法与架构
DFX与量产封装
PC&Server OS设置
移动OS设置
软件方案
新浪备份
有道备份
页面
游戏
影视
直播
广播
听书
音乐
图片
看书
微视
主播
统计
友链
留言
关于
论坛
邮件
推荐
我的云盘
我的搜索
我的记录
我的文件
我的图书
我的笔记
我的音乐
我的影视
我的邮件
搜索到
344
篇与
的结果
2025-07-14
NVLink1.0~5.0: 高速互联的架构演进之路
01、引言:数据时代的“高速公路”在人工智能(AI)和高性能计算(HPC)的浪潮中,计算能力的提升不仅依赖于处理器性能,还需要高效的数据传输通道。传统 PCIe 互联虽广泛应用,但其带宽和延迟已难以满足现代计算需求。NVIDIA 的 NVLink 应运而生,作为一种高速、低延迟的点对点互联技术,它为多 GPU 和 CPU-GPU 系统提供了“数据高速公路”,显著提升了计算效率。本文将从技术视角深入剖析 NVLink 的架构、演进历程、应用场景及生态布局,为科技人士、通信工程师和学术研究者提供全面洞察。02、NVLink架构:技术核心与关键特性NVLink 是 NVIDIA 专为高性能计算设计的互联技术,旨在实现 GPU 间或 GPU 与 CPU 间的高速数据交换。其架构基于点对点通信,采用多通道设计,每个通道(称为“链接”)包含多个差分对,提供高带宽和低延迟的数据传输。核心特性高带宽:NVLink 提供远超 PCIe 的带宽。例如,最新 NVLink 5.0 单链接双向带宽达 200 GB/s,总带宽可达 1.8 TB/s,而 PCIe 5.0 x16 仅约 126 GB/s。低延迟:通过专用通道和优化协议,NVLink 显著降低数据传输延迟,适合实时计算任务。缓存一致性:NVLink 支持 GPU 间或 GPU-CPU 间的缓存一致性,允许共享统一内存空间,减少数据拷贝开销。可扩展性:结合 NVSwitch,NVLink 支持全连接拓扑,使多 GPU 系统实现高效通信。NVLink 的工作原理类似高速公路网络:每个 GPU 或 CPU 是“城市”,链接是“车道”,NVSwitch 则像“交通枢纽”,确保数据流畅无阻。这种设计特别适合需要大规模并行计算的场景,如 AI 模型训练和科学模拟。03、技术演进:从NVLink 1.0到5.0 的跨越NVLink 自 2016 年首次亮相以来,经历了五代技术迭代,每一代都针对计算需求的增长进行了优化。版本年份GPU 架构每链接带宽(双向,GB/s)链接数总带宽(GB/s)备注1.02016Pascal404160首代,Tesla P1002.02017Volta506300支持 NVSwitch,DGX-13.02020Ampere5012600A100 GPU,广泛用于云4.02022Hopper10018900H100 GPU,PAM4 编码5.02024Blackwell200181800GB200 NVL72,AI 优化以下是对其演进历程的详细分析,涵盖技术原理、软硬件架构及技术演进亮点。1、NVLink 1.0(2016):开创高速互联先河GPU架构:Pascal(Tesla P100)带宽:每链接 40 GB/秒(双向,20 GB/秒单向),P100 支持 4 个链接,总带宽 160 GB/秒。技术原理:采用 NRZ(非归零)信号编码,每个时钟周期传输 1 位数据。NVLink 使用差分对传输,包含 8 条子通道,每条子通道运行在 20 Gbps。协议栈基于定制的点对点通信,优化了数据包格式,减少了传输开销。软硬件软件架构:NVLink 1.0 直接集成在 P100 GPU 芯片上,每个链接占用专用硅片区域。软件方面,CUDA 7.0 引入了cudaMemcpyPeer API技术,支持GPU间直接内存拷贝,简化了多GPU编程。技术演进亮点:首次亮相于Pascal架构的Tesla P100,提供160GB/s总带宽,较PCIexpress 3.0x16(约32GB/s)提升数倍,奠定了多GPU互联基础。应用场景:主要用于早期深度学习任务,如图像识别模型(如 ResNet)的训练。DGX-1 系统首次采用 NVLink 1.0,连接 8 个 P100 GPU,奠定了多 GPU 系统的基础。挑战与突破:NVLink 1.0 的主要挑战是链接数量有限,仅支持 4 个链接,限制了多 GPU 系统的扩展性。NVIDIA 通过优化协议和硬件设计,确保了低延迟和高可靠性,为后续版本奠定了技术基础。2、NVLink 2.0(2017):引入 NVSwitch,扩展规模GPU架构:Volta(Tesla V100)带宽:每链接 50 GB/秒(双向,25 GB/秒单向),V100 支持 6 个链接,总带宽 300 GB/秒。技术原理:继续使用 NRZ 编码,但通过提高时钟频率和优化信号完整性,将单链接带宽提升 25%。引入 NVSwitch,一个高性能交换矩阵,支持全连接拓扑,允许多达 16 个 GPU 直接通信。NVSwitch 包含 18 个 NVLink 端口,每个端口提供 50 GB/秒带宽,总吞吐量达 900 GB/秒。软硬件架构:NVSwitch 作为独立芯片,集成在 DGX-2 系统,连接 16 个 V100 GPU。软件方面,CUDA 9.0 和 NCCL 2.0 优化了集体通信操作(如 all-reduce),提升了分布式训练效率。NVLink 2.0 支持缓存一致性,允许多 GPU 共享统一内存空间。技术演进亮点:引入 NVSwitch,支持全连接拓扑,带宽增至 300 GB/s,广泛用于 DGX-1 系统。应用场景:广泛用于 AI 研究和企业级应用,如自然语言处理(BERT 模型)和推荐系统训练。Summit 超级计算机(橡树岭国家实验室)采用 NVLink 2.0,连接 IBM Power9 CPU 和 V100 GPU,位列全球超算前列。挑战与突破:NVLink 2.0 解决了扩展性问题,但 NVSwitch 的引入增加了系统复杂性和成本。NVIDIA 通过优化交换矩阵设计和协议栈,确保了高吞吐量和低延迟。3、NVLink 3.0(2020):链接数量翻倍GPU架构:Ampere(A100)带宽:每链接 50 GB/秒(双向),A100 支持 12 个链接,总带宽 600 GB/秒。技术原理:维持 NRZ 编码,但通过增加链接数量(从 6 到 12),将总带宽翻倍。引入多实例 GPU(MIG)技术,允许将 A100 GPU 虚拟化为多个独立实例,每个实例可分配 NVLink 链接,提升资源利用率。协议栈进一步优化,支持更高效的缓存一致性。软硬件架构:A100 GPU 的 NVLink 端口集成在芯片边缘,采用高密度封装技术。DGX A100 系统使用 8 个 A100 GPU,通过 NVSwitch 连接,提供 4.8 TB/秒的内部带宽。CUDA 11.0 和 NCCL 2.7 增强了对 NVLink 3.0 的支持,优化了分布式训练和推理。技术演进亮点:链接数翻倍至 12,带宽达 600 GB/s,搭配 A100 GPU,满足大模型训练需求。应用场景:云服务(如 AWS P4d 实例)、AI 训练和推理,以及 HPC 任务(如分子动力学模拟)。A100 的 MIG 功能特别适合云端多租户环境。挑战与突破:链接数量的增加提高了芯片设计复杂性,NVIDIA 通过先进的硅片布局和信号完整性技术解决了这一问题。MIG 技术的引入进一步提升了灵活性。4、NVLink 4.0(2022):PAM4 信号革命GPU架构:Hopper(H100)带宽:每链接 100 GB/秒(双向,50 GB/秒单向),H100 支持 18 个链接,总带宽 900 GB/秒。技术原理:首次采用 PAM4(4 级脉冲幅度调制)信号编码,每个时钟周期传输 2 位数据,较 NRZ 翻倍数据率。PAM4 要求更高的信噪比,NVIDIA 通过先进的纠错码(ECC)和信号调制技术确保可靠性。协议栈优化了流量管理,支持动态带宽分配。软硬件架构:H100 GPU 使用 TSMC 4nm 工艺,NVLink 端口数量增至 18,集成在芯片边缘的高速 I/O 区域。DGX H100 系统通过 NVSwitch 连接 8 个 H100 GPU,提供 7.2 TB/秒的内部带宽。CUDA 12.0 和 NCCL 2.10 引入了新的通信原语,优化了超大规模模型训练。技术演进亮点:采用 PAM4 编码,链接数增至 18,总带宽 900 GB/s,H100 GPU 成为 HPC 标杆。应用场景:训练超大规模 AI 模型(如 GPT-4)和高精度科学模拟(如量子化学计算)。H100 的 NVLink 4.0 特别适合需要极高吞吐量的任务。挑战与突破:PAM4 的复杂性增加了设计难度,NVIDIA 通过优化信号处理和芯片布局,确保了高性能和可靠性。5、NVLink 5.0(2024):面向 exascale 计算GPU架构:Blackwell(B200)带宽:每链接 200 GB/秒(双向,100 GB/秒单向),B200 支持 18 个链接,总带宽 1.8 TB/秒。技术原理:进一步优化 PAM4 编码,通过提高时钟频率和信号调制效率,将单链接带宽翻倍。引入 NVLink-C2C(Chip-to-Chip)技术,支持与 Grace CPU 的高速连接,提供 900 GB/秒的 CPU-GPU 带宽。协议栈支持动态流量优先级,确保多种工作负载的平衡。软硬件架构:B200 GPU 使用 3nm 工艺,NVLink 端口采用高密度封装,支持更高的信号密度。GB200 NVL72 系统连接 72 个 Blackwell GPU,通过 NVSwitch 提供 130 TB/秒的内部带宽。CUDA 13.0 和 NCCL 2.12 优化了 exascale 级通信模式。技术演进亮点:带宽翻倍至 1.8 TB/s,搭配 Blackwell 架构的 GB200 NVL72,支持超大规模 AI 集群。应用场景:exascale 级别的 AI 和 HPC 任务,如气候建模、基因组分析和超大规模语言模型训练。NVLink-C2C 特别适合 CPU-GPU 协同计算。挑战与突破:高带宽和高链接数量增加了功耗和散热挑战,NVIDIA 通过先进的电源管理和冷却技术解决了这些问题。04、NVLink技术原理分析信号技术NVLink 的信号技术从 NRZ 进化到 PAM4。NRZ 每个时钟周期传输 1 位数据,而 PAM4 传输 2 位,通过四种电平表示 00、01、10、11。这使得在相同物理带宽下,数据传输率翻倍。PAM4 虽然对信噪比要求更高,但通过先进的纠错码(ECC)和信号调制技术,NVLink 4.0 及以后的版本成功实现了高可靠性的高速传输。协议栈NVLink 使用定制的协议栈,优化了数据包格式和传输机制。与 PCIe 相比,NVLink 的协议更精简,减少了开销,降低了延迟。协议支持多种流量类型,包括内存访问、I/O 操作和消息传递,确保了灵活性和高效性。NVLink 5.0 引入了动态流量优先级,允许根据工作负载需求调整带宽分配。缓存一致性NVLink 支持硬件级的缓存一致性,允许多个 GPU 共享统一的内存地址空间,而无需软件干预。这通过目录式缓存一致性协议实现,类似于多核 CPU 的设计。每个 GPU 维护自己的缓存,并通过 NVLink 广播或点对点通信来维护一致性。这种机制极大地简化了编程模型,提高了开发效率。软硬件架构硬件集成NVLink 接口直接集成在 GPU 芯片上,每个 GPU 拥有多个 NVLink 端口。端口数量和带宽随 GPU 型号而异。NVSwitch 作为交换矩阵,连接多个 GPU,形成全连接或部分连接的拓扑结构,确保任意两个 GPU 间都有直接或间接的高速路径。NVLink-C2C 技术将 CPU 和 GPU 连接,提供高带宽协同计算能力。软件支持NVIDIA 提供了丰富的软件栈来利用 NVLink:CUDA:提供cudaMemcpyPeer等API,支持GPU间直接内存拷贝。NCCL:优化了集体通信操作,如 all-reduce、broadcast,广泛用于分布式训练。Unified Memory:允许 CPU 和 GPU 共享内存,NVLink 提供高带宽支持,减少数据移动开销。演进亮点NVLink 1.0(2016):首次亮相于 Pascal 架构的 Tesla P100,提供 160 GB/s 总带宽,较 PCIe 3.0 x16(约 32 GB/s)提升数倍,奠定了多 GPU 互联基础。NVLink 2.0(2017):引入 NVSwitch,支持全连接拓扑,带宽增至 300 GB/s,广泛用于 DGX-1 系统。NVLink 3.0(2020):链接数翻倍至 12,带宽达 600 GB/s,搭配 A100 GPU,满足大模型训练需求。NVLink 4.0(2022):采用 PAM4 编码,链接数增至 18,总带宽 900 GB/s,H100 GPU 成为 HPC 标杆。NVLink 5.0(2024):带宽翻倍至 1.8 TB/s,搭配 Blackwell 架构的 GB200 NVL72,支持超大规模 AI 集群。NVLink 的演进反映了 NVIDIA 对计算规模和复杂性增长的精准应对。从最初的 GPU-GPU 互联,到如今支持 CPU-GPU 协同(如 Grace CPU),NVLink 已从单一技术成长为数据中心计算的核心支柱。05、应用场景:赋能AI与HPCNVLink 的高带宽和低延迟使其在以下领域大放异彩:人工智能与深度学习AI 模型(如大语言模型)需要处理海量参数和数据,单 GPU 内存和计算能力往往不足。NVLink 允许多 GPU 共享统一内存池,加速模型训练。例如,训练 GPT-3 规模的模型需数十 GB 参数,NVLink 确保 GPU 间快速交换梯度和权重,缩短训练时间。NVIDIA DGX A100(8 个 A100 GPU,NVLink 3.0)可将训练时间从数月缩短至数周。高性能计算(HPC)HPC 任务,如气候建模、分子动力学模拟,需处理大规模矩阵运算。NVLink 的高带宽减少数据传输瓶颈,提升计算效率。例如,美国橡树岭国家实验室的 Summit 超级计算机使用 IBM Power9 CPU 和 NVIDIA V100 GPU,通过 NVLink 2.0 实现高效互联,位列全球超算前列。数据科学与分析在数据密集型任务中,NVLink 加速多 GPU 协作处理。例如,金融风控模型需分析海量交易数据,NVLink 确保快速数据分发,缩短分析时间。云服务云服务商如 AWS(P4d 实例,A100 GPU)、Azure 和 Google Cloud 提供 NVLink 连接的 GPU 实例,允许用户按需租用高性能计算资源,无需自建硬件。例如,AWS P4d 实例使用 NVLink 3.0,支持多 GPU 训练和推理。06、生态布局:硬件、软件与合作伙伴NVLink 的成功不仅在于技术本身,还得益于 NVIDIA 构建的强大生态系统。硬件生态GPU与CPU:NVLink 支持 NVIDIA 全系列 GPU,从 Pascal 到 Blackwell。Grace CPU 通过 NVLink-C2C 与 GPU 实现高带宽连接,Grace Hopper 超级芯片更是将 CPU 和 GPU 集成于同一封装,提供超高性能。NVSwitch:NVSwitch 扩展了 NVLink 的连接能力,支持全连接拓扑。例如,DGX-2 使用 12 个 NVSwitch 连接 16 个 V100 GPU,GB200 NVL72 则连接 72 个 Blackwell GPU。DGX与HGX系统:DGX 系统(如 DGX A100、H100)是 NVLink 的旗舰平台,预配置多 GPU 和 NVSwitch,适合企业 AI 开发。HGX 平台则为服务器厂商提供灵活的 NVLink 集成方案。软件生态CUDA与 NCCL:CUDA 提供 NVLink 专用 API,简化多 GPU 数据传输。NCCL(NVIDIA 集体通信库)优化了多 GPU 通信模式,广泛用于 AI 框架。AI框架:TensorFlow、PyTorch 等主流框架支持 NVLink,开发者可无缝利用其高带宽特性。NVIDIA AI Enterprise:提供预优化模型和微服务(如 NIM),与 NVLink 硬件协同,提升 AI 部署效率。合作伙伴生态服务器厂商:Dell、HPE、Lenovo 等厂商推出 NVLink 服务器,满足企业需求。云服务商:AWS、Azure、Google Cloud 提供 NVLink 实例,降低用户进入门槛。超算中心:Summit、Perlmutter 等顶级超算采用 NVLink,验证其在极端计算中的可靠性。未来方向NVLink 的生态布局正向更广泛领域扩展。Grace CPU 和 Blackwell 架构的推出表明 NVIDIA 致力于构建 CPU-GPU 统一计算平台。未来,NVLink 或将融入 6G 网络、边缘计算等新兴领域,进一步推动计算架构创新。然而,开放标准如 UALink(支持 1,024 GPU,200 GT/s 带宽)可能对 NVLink 的专有性构成挑战,NVIDIA 需平衡技术领先与生态开放性。07、写在最后:NVLink的计算革命NVLink 从 2016 年的初代到 2024 年的第五代,已成为 AI 和 HPC 的核心技术。其高带宽、低延迟和缓存一致性特性,赋能了从云端到边缘的计算创新。无论是训练万亿参数的 AI 模型,还是运行复杂的科学模拟,NVLink 都提供了不可或缺的“数据动脉”。通过硬件、软件和合作伙伴的协同,NVIDIA 构建了强大的 NVLink 生态,为计算行业树立了标杆。未来,随着计算需求的持续增长,NVLink 无疑将继续引领技术前沿,驱动下一代计算革命。本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。原始发表:2025-04-29,如有侵权请联系 hegangben@163.com 删除
2025年07月14日
15 阅读
0 评论
0 点赞
2025-07-14
Linux下 lsof 命令详解
lsof 是 List Open File 的缩写, 它主要用来获取被进程打开文件的信息,我们都知道,在Linux中,一切皆文件,lsof命令可以查看所有已经打开了的文件,比如: 普通文件,目录,特殊的块文件,管道,socket套接字,设备,Unix域套接字等等,同时,它还可以结合 grep 以及 ps 命令进行更多的高级搜索安装lsof 命令默认是没有安装的,而且它的使用需要有root权限或者赋予普通用于sudo权限lsof 命令有很多可选参数,本文根据我自己的使用经验整理了一些比较常用且重要的用法列出所有打开的文件不带任何参数执行 lsof 命令会输出当前所有活跃进程打开的所有文件[root@ecs-centos-7 ~]# lsof | more COMMAND PID TID USER FD TYPE DEVICE SIZE/OFF NODE NAME systemd 1 root cwd DIR 253,1 4096 2 / systemd 1 root rtd DIR 253,1 4096 2 / systemd 1 root txt REG 253,1 1624520 530313 /usr/lib/systemd/systemd systemd 1 root mem REG 253,1 20064 528340 /usr/lib64/libuuid.so.1.3.0 systemd 1 root mem REG 253,1 265600 532853 /usr/lib64/libblkid.so.1.1.0 systemd 1 root mem REG 253,1 90248 525942 /usr/lib64/libz.so.1.2.7 systemd 1 root mem REG 253,1 157424 525955 /usr/lib64/liblzma.so.5.2.2 systemd 1 root mem REG 253,1 23968 526159 /usr/lib64/libcap-ng.so.0.0.0 systemd 1 root mem REG 253,1 19896 526135 /usr/lib64/libattr.so.1.1.0 systemd 1 root mem REG 253,1 19288 525996 /usr/lib64/libdl-2.17.so systemd 1 root mem REG 253,1 402384 525931 /usr/lib64/libpcre.so.1.2.0由于lsof命令会输出很多信息,所以上面例子中使用了 lsof | more 来分页显示命令输出结果输出结果中,第一列中 systemd 的进程ID是 1,它是一个守护进程其中列 COMMAND 、PID、USER 分别表示进程名、进程ID、所属用户列 FD 是文件描述符,下面是可能的类型以及说明FD 说明cwd 当前目录txt txt文件rtd root目录mem 内存映射文件列 TYPE 是文件类型,下面是可能的值以及说明TYPE 说明DIR 目录REG 普通文件CHR 字符a_inode Inode文件FIFO 管道或者socket文件netlink 网络unknown 未知列 DEVICE 表示设备ID列 SIZE/OFF 表示进程大小列 NODE 表示文件的Inode号列NAME 表示路径或者链接列出指定用户已打开的文件使用 -u 选项可以列出指定用户已经打开的文件,该选项后面可以接多个用户名,每个用户名之间用空格隔开,表示列出所有指定用户已打开的所有文件[root@ecs-centos-7 ~]# lsof -u tt | more COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME bash 27789 tt cwd DIR 253,1 4096 131090 /home/tt bash 27789 tt rtd DIR 253,1 4096 2 / bash 27789 tt txt REG 253,1 964600 525779 /usr/bin/bash vim 27813 tt txt REG 253,1 2337192 531847 /usr/bin/vim vim 27813 tt 4u REG 253,1 12288 131167 /home/tt/.p.txt.swp上面的例子中,lsof -u tt 命令表示列出 tt 用户已经打开了的文件,从结果可以看出,用户打开了 /home/tt、/、/usr/bin/bash、/usr/bin/vim、/home/tt/.p.txt.swp 这几个文件如果要排除指定用户已经打开的文件,可以在用户名前加 ^ 符号,下面的命令会列出除tt用户外其他所有用户已打开了的文件lsof -u ^tt | more 找出打开着但已被删除了的文件有这样一种场景,有一个服务正在往日志文件中写日志,这个时候,不小心把正在写入的日志文件删除了上面的场景中,日志文件虽然被删除了,但是文件仍然是打开着的,它仍然占用文件系统的空间,我们可以结合 grep 命令找出这种打开着,但是已经被删除的文件[root@ecs-centos-7 ~]# lsof -u tt | grep deletedvim 27813 tt 4u REG 253,1 12288 131167 /home/tt/.p.txt.swp(deleted)上面例子中使用 lsof -u tt | grep deleted 命令查看用户 tt打开着的确被删除的文件从结果可以看出,在往 p.txt写入内容的时候,文件被删除了列出所有打开了的网络文件[root@ecs-centos-7 ~]# lsof -i COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME ntpd 567 ntp 18u IPv4 12657 0t0 UDP localhost:ntp ntpd 567 ntp 22u IPv6 16095 0t0 UDP ecs-centos-7.4-64bit-20200212:ntp dhclient 651 root 6u IPv4 14594 0t0 UDP *:bootpc master 960 root 13u IPv4 15791 0t0 TCP localhost:smtp (LISTEN) master 960 root 14u IPv6 15792 0t0 TCP localhost:smtp (LISTEN) mysqld 1053 mysql 13u IPv6 15147 0t0 TCP *:mysql (LISTEN) sshd 1348 root 3u IPv4 16698 0t0 TCP *:ssh (LISTEN)列出所有 IPV4/6 网络文件列出所有已经打开了的 ipv4 网络文件[root@ecs-centos-7 ~]# lsof -i 4 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME ntpd 567 ntp 16u IPv4 12651 0t0 UDP *:ntp ntpd 567 ntp 18u IPv4 12657 0t0 UDP localhost:ntp ntpd 567 ntp 21u IPv4 16094 0t0 UDP ecs-centos-7.4-64bit-20200212:ntp dhclient 651 root 6u IPv4 14594 0t0 UDP *:bootpc master 960 root 13u IPv4 15791 0t0 TCP localhost:smtp (LISTEN) sshd 1348 root 3u IPv4 16698 0t0 TCP *:ssh (LISTEN)所有已经打开了的 ipv6 网络文件[root@ecs-centos-7 ~]# lsof -i 6 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME ntpd 567 ntp 17u IPv6 12652 0t0 UDP *:ntp ntpd 567 ntp 19u IPv6 12658 0t0 UDP localhost:ntp ntpd 567 ntp 22u IPv6 16095 0t0 UDP ecs-centos-7.4-64bit-20200212:ntp master 960 root 14u IPv6 15792 0t0 TCP localhost:smtp (LISTEN) mysqld 1053 mysql 13u IPv6 15147 0t0 TCP *:mysql (LISTEN) sshd 1348 root 4u IPv6 16700 0t0 TCP *:ssh (LISTEN)列出在指定端口上打开的文件使用 lsof -i:端口号 可以获得所有在指定端口号上打开的文件lsof -i:22上面例子列出了所有在22号端口上打开的文件在服务器开发中,经常会部署一个网关或者代理程序,用来和客户端通讯,网关或者代理程序需要开放一个固定的端口供客户端连接用如果客户端连接不上网关或者代理程序,我们可以用上述命令检查网关或代理程序的端口是否开启,来排除因为端口关闭了导致连接不上网关的情况列出使用了指定协议(TCP/UDP) 的文件使用 lsof -i TCP/UDP 列出使用了TCP 或 UDP 协议的文件 lsof -i TCP | more使用 lsof -i TCP:3306 列出使用了TCP 协议并且端口为3306的文件 使用 lsof -i TCP:1-1024 列出使用了TCP协议并且端口范围为 1 到 1024 的文件列出目录中所有打开的文件可以使用lsof命令列出指定目录中的所有打开文件现有一个data目录 ,结构如下:tree data/列出 data 目录中打开的文件[root@ecs-centos-7 tt]# lsof +D ./data/lsof +d ./data/上面例子中,+D 和 +d 选项都是列出目录中打开的文件+D 选项会列出一个目录和其子目录中打开的文件,而 +d 选项只会列出当前目录下已打开的文件列出指定进程ID打开的文件进程ID是操作系统进程的唯一标识,以下命令列出了进程ID为 1053 相关的文件, 从结果中可以知道这个进程ID对应的进程是MySQL lsof -p 1053上述命令中,-p 选项后面可以指定多个进程ID,每个进程ID之间用逗号分隔,如果想排除掉某个进程打开的文件,可以在该进程ID前面加上 ^符号lsof -p 1,2,3,^4上述命令会列出进程1,进程2,进程3打开的所有文件,同时忽略进程4打开的文件杀死指定用户的所有进程前面介绍了列出指定用户所有打开的文件,我们可以组合 kill 命令一起使用,实现杀死指定用户的所有进程的功能,具体的命令如下kill -9 lsof -t -u tt上述命令中,lsof -u tt 是列出tt用户所有打开的文件,加上 -t 选项之后表示结果只列出PID列,也就是进程ID列,其他列都忽略,前面的 kill -9 表示强制结束指定的进程ID小结本文介绍了 lsof 命令的一些常见用法,它还有很多其他的用法,请自行查看man文档https://www.cnblogs.com/wanng/p/lsof-cmd.html
2025年07月14日
11 阅读
0 评论
0 点赞
2025-07-11
Docker与虚拟机的区别和对比
从自己的博客园保存 2020-02-03 17:59 Docker与虚拟机的区别和对比由于Docker相比于虚拟机,在诸多方面有着的明显的优势,所以仅仅数年时间,就完成了从诞生,到兴起,再到主流的蜕变,这无疑也是对其在软件开发中卓越贡献的肯定。以下为二者区别的概述:操作系统方面与虚拟机不同,Docker不需要在宿主机的系统之上再运行新的系统,虚拟机会根据需要加载不同的系统,这些功能完备的系统大小往往高达数个GB,而Docker则是微型的Linux系统,其没有硬件的虚拟化资源,大小仅为百兆,在运行时与宿主机共享OS,因此启动速度达到秒级,而虚拟机则为分钟级。储存大小方面Docker容器的镜像很小,非常方便存储和传输,运维工程师可以分分中完成下载和运行,而对于虚拟机来说,它的镜像,如vmdk、vdi等,就显得十分庞大,往往在10G以上,传输和存储十分不便。运行性能方面无论是在服务器和本地PC上运行,Docker几乎没有性能的损失,不浪费原本就很珍贵的资源,所以即使是“小霸王”,也能跑的起来。而虚拟机则需要消耗大量的、额外的CPU和内存资源,在打开idea的情况下,再跑一到两个Linux,一般的机器肯定是可以体验到如集成显卡打单机一般的酸爽了。移植性方面Docker容器轻便、灵活、适应于Linux,而虚拟机相对笨重,与虚拟化技术的耦合度非常高,因此移植性相对较差。部署速度Docker的部署往往在按下回车的谈笑之间,而虚拟机的部署则需要再加上一支烟。功能方向方面Docker致力于给软件开发者带来便捷,可以很大程度上促进DevOops模式的发展。而相对笨重的虚拟机则专注于为硬件运维者提供服务。(在这个软件爆发的时代,硬件的发展很大程度上被忽略,软件有高工资,有大量的新晋人才,一个大牛带着个位数人员团队干个几个月就可以拿到投资,闪亮登场。而硬件技术发展相对需要付出巨大的成本,难见成效,因而关注较少,往往只有大佬级公司才会有资金和精力去研究硬件。而硬件,才是信息时代的根基啊。)————————————————版权声明:本文为CSDN博主「达希希」的原创文章,遵循 CC 4.0 BY 版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/weixin_43838898/article/details/100058671
2025年07月11日
7 阅读
0 评论
0 点赞
2025-07-11
Verilog中阻塞(=)与非阻塞语句(<=)
从自己的博客园保存 2020-02-03 17:54阻塞赋值语句(=)与非阻塞赋值语句(<=)区别叙述如下: 1、在串行语句中,阻塞赋值语句按照排列顺序依次执行;非阻塞赋值语句没有先后之分,并行执行,排在前面语句不影响后面语句(实质是通过每级之间加一个D触发器实现)。 2、赋值语句执行时,阻塞的先计算右端表达式的值,然后立刻将值赋给左边变量;非阻塞的也是先计算右端表达式的值,但是要等待延时后再将值赋给左边(同样因为D触发器)。文字叙述起来不直观,我们看例子。例:下面代码实现一个寄存器module resist(din,clk,out1,out2,out3); input din,clk; output out1,out2,out3; reg out1,out2,out3; always@(posedge clk) //上升沿触发 begin out1=din; // 使用阻塞赋值语句 out2=out1; out3=out2; end endmodule测试代码如下:module resist_tb; reg din,clk; wire out1,out2,out3; resist U1(din,clk,out1,out2,out3); always #100 clk=~clk; //时钟周期为200 initial begin clk=0; // clk开始为0 din=1; #350 din=0; // 传递的数据 #400 din=1; #400 din=0; #2000 $finish; end endmodule仿真wave图像: 我们从wave图形上看到out1、out2、out3是完全相同的。所以实际电路是:明显电路为一寄存器,不过可以同时输出到out1、out2、out3。而如若将模型中阻塞赋值语句改为非阻塞赋值语句:out1=din; out1<=din; out2=out1; ----> out2<=out1;out3=out2; out3<=out2;测试代码不变,仿真后wave图形为: 我们发现out3落后out2一个时钟周期,out2落后out1一个时钟周期;这正是因为非阻塞赋值语句要等待时钟的效果。具体是在一个上升沿到来时,数据din,out1',out2'('表示上个时钟时的数据),数据平行(并行)向右移动,out2得到的并不是当前out1,而是上个时钟D触发器存储out1'(=d'),当前out1=d,这样out2要得到din就比out1落后一个时钟周期,同样out3与out2相比,这其中就是由于各个D触发器的作用。 实际电路即为: 这两个实质差别就在于非阻塞会引入D触发器,各个数据必须按时钟节拍从左向右传递,而阻塞赋值语句代码从左往右顺序写不会引入多级D触发器。————————————————版权声明:本文为CSDN博主「ChunyuY19」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/c_ycy/article/details/53883794
2025年07月11日
5 阅读
0 评论
0 点赞
2025-07-11
Foxit Reader去广告方法 (2011-04-06 11:23:12)
来自自己的新闻博客:(2011-04-06 11:23:12)方法一:展开HKEY_CURRENT_USER--Software--Foxit Software--福昕阅读器--MainFrame 在右侧找到ShowAd 双击ShowAd 将值由1为0就OK了 非常简单方法二:Foxit Reader 主界面上,菜单栏右侧有Foxit公司其他产品的广告条,如下图:http://img.xbeta.info/foxit-ad1.pngReader去广告方法" />清除办法:(致谢:Fish、coondia)通过图形界面的方法:打开任意文件→工具栏上点右键→去掉“广告(advertisement)”前的勾。修改配置文件的方法:配置文件FoxitReader_Preferences.ini 中:LaunchWarn=0 ;关闭广告LaunchWarn=1 ;打开广告Foxit会提示是否安装Ask工具条。如果不需要,下列方法均可避免。按推荐程度,依次列举如下:自定义安装(推荐)大多数软件,在自定义安装模式下,都会更加透明,非常容易看清有哪些模块。这样,也能加深用户对软件的理解。另外,是否要安装某些部件,yes or no,一目了然,不容易玩躲猫猫的文字游戏。所以,对任何软件安装,都推荐此方式。Foxit Reader自定义安装时,不会有广告条。替换exe升级(推荐)如果你已经安装了旧版Foxit Reader,则建议下载官方的 zip包 ,把 Foxit Reader.exe 解压出来,覆盖旧版。优点:所有扩展、语言包、设定,都得以保存。避免安装过程的捆绑程序。msi格式安装包(未来趋势)有网友称,采用此安装包格式,不会安装广告。默认安装方式:考验你的注意力对exe格式的安装包,如果用「默认安装」方式,会提醒安装附加工具条。但取消的办法不仅要“不选取”,还需要有看清文字,来一个非常规做法:点击“decline”。http://img.xbeta.info/foxit-toolbar.pngReader去广告方法" />摘自互联网
2025年07月11日
5 阅读
0 评论
0 点赞
1
...
50
51
52
...
69