第三篇 Python函数[第一篇 Python入门](http://blog.51cto.com/10630401/2046984)[第二篇 Python数据类型、字符编码、文件处理](http://blog.51cto.com/10630401/2049359)[第三篇 Python函数](http://blog.51cto.com/10630401/2053628)[第四篇 模块与包](htt
一、什么是大模型?这两年AI火,就是因为大模型火。那么,什么是大模型?大模型 是具有庞大参数规模和复杂计算结构的 机器学习模型。参数,是指在模型训练过程中,学习和调整的变量。参数定义了模型的行为、性能、实现的成本以及对计算资源的需求。简单来说,参数是模型内部用来做出预测或决策的部分。大模型,通常拥有数百万至数十亿的参数。相对应的,参数少的,就是小模型。对一些细分的领域或场景,小模型也够用
一、什么是机器学习?其实我们前面介绍规则总结的时候,其实已经提到了机器学习。机器学习的核心思想,是构建一个可以从数据中学习的模型,并利用这个模型来进行预测或决策。机器学习不是一个具体的模型或算法。它包括了很多种类型,例如:监督学习:算法从带有标签的数据集中学习,即每个训练样本都有一个已知的结果。无监督学习:算法从没有标签的数据集中学习。半监督学习:结合了少量的带标签数据和大量的未带标签数据进行训练
一、什么是AI?AI(artificial intelligence的缩写)。Artificial,意思就是“人工的、人造的”,和natural(天然的)是反义词。Intelligence,是“智能”的意思。英特尔(Intel)公司的名字,就是基于这个词的前五个字母。结合起来,AI,就是“人工的、人造的智能”,用人为的手段,创造智能。标准的定义:AI,是研究、开发用于模拟、延伸和扩展人的智能行为的
Logrotate简介logrotate 是一个 linux 系统日志的管理工具。可以对单个日志文件或者某个目录下的文件按时间 / 大小进行切割、压缩操作;指定日志保存数量;还可以在切割之后运行自定义命令。logrotate 是基于 crontab 运行的(准确来说是基于timer和crontab定时机制),所以这个时间点是由 crontab 控制的,具体可以查询 crontab 的配置文件 /e
随着计算领域的不断发展,数据处理单元(DPU)的出现正在重塑数据中心和计算架构的未来。什么是DPU?数据处理单元(DPU)是一种专门设计用于处理数据中心中的网络、存储和计算任务的硬件加速器,它与CPU和GPU一起组成计算的三大支柱之一。作为一种新型可编程处理器,DPU结合了三个关键元素,是一个片上系统(SoC),它结合了:强大的处理能力:DPU利用广泛应用的Arm架构,包含了行业标准、高性能、软件
背景:单CPU处理网络IO存在瓶颈, 目前经常使用网卡多队列提高性能.通常情况下, 每张网卡有一个队列(queue), 所有收到的包从这个队列入, 内核从这个队列里取数据处理. 该队列其实是ring buffer(环形队列), 内核如果取数据不及时, 则会存在丢包的情况.一个CPU处理一个队列的数据, 这个叫中断. 默认是cpu0(第一个CPU)处理. 一旦流量特别大, 这个CPU负载很高, 性能
概述Libvirt工具采用XML格式的文件描述一个虚拟机特征,包括虚拟机名称、CPU、内存、磁盘、网卡、鼠标、键盘等信息。用户可以通过修改配置文件,对虚拟机进行管理。本文主要介绍XML配置文件各个元素的含义。基本格式虚拟机XML配置文件以domain为根元素,domain根元素中包含多个其他元素。XML配置文件中的部分元素可以包含对应属性和属性值,用以详细地描述虚拟机信息,同一元素的不同属性使用空
1. custom模式KVM关于CPU型号的定义, libvirt对CPU的定义提炼出标准的几种类型在 /usr/share/libvirt/cpu_map/index.xml目录下可以查到, 包含了features和vendors的定义.这种方案主要是为了在虚拟机迁移的时候, 在不同的宿主机间保证兼容性。主要是以下几种CPU型号:'486' 'pentium' 'pentium2' 'pent
SR-IOV 简介SR-IOV 技术是一种基于硬件的虚拟化解决方案,可提高性能和可伸缩性。SR-IOV 标准允许在虚拟机之间高效共享 PCIe(Peripheral Component Interconnect Express,快速外设组件互连)设备,并且它是在硬件中实现的,可以获得能够与本机性能媲美的 I/O 性能。SR-IOV 规范定义了新的标准,根据该标准,创建的新设备可允许将虚拟机直接连接
一、简介网卡绑定mode共有七种(0~6) bond0、bond1、bond2、bond3、bond4、bond5、bond6。常用的三种:mode=0:平衡负载模式,有自动备援,但需要”Switch”支援及设定。 mode=1:自动备援模式,其中一条线若断线,其他线路将会自动备援。 mode=6:平衡负载模式,有自动备援,不必”Switch”支援及设定。二、七种模型详解1)mode=0(bala
基础知识:网卡是工作在链路层的网络组件,是局域网中连接计算机和传输介质的接口,不仅能实现与局域网传输介质之间的物理连接和电信号匹配,还涉及帧的发送与接收、帧的封装与拆封、介质访问控制、数据的编码与解码以及数据缓存的功能等。早期的网卡,一个芯片只能处理一个通道,所以都是单口的。后来由于总线带宽的提高,加上芯片性能的提高,所以出现了双口以上的网卡。其实原因很简单:PCI槽有限。所以,单个槽里的网口越多
虚拟内核文件系统(VirtualKernel File Systems),是指那些是由内核产生但不存在于硬盘上(存在于内存中)的文件系统。1、procproc文件系统为操作系统本身和应用程序之间的通信提供了一个安全的接口。通过它里面的一些文件,可以获取系统状态信息并修改某些系统的配置信息。当我们在内核中添加了新功能或设备驱动时,经常需要得到一些系统状态的信息,一般这样的功能需要经过一些像ioctl
awk统计命令:1、求和代码示例:cat date |awk '{sum+=$1} END {print "SUM=",sum}'2、求平均代码示例:cat date |awk '{sum+=$1} END {print "AVG=",sum/NR}'3、求最大值代码示例:cat date |awk 'BEGIN {max=0} {if($1>max) max=$1 fi} END {pri
常用的属性: import sys sys.argv 命令行参数List,第一个元素是程序本身路径 sys.exit(n) 退出程序,正常退出时exit(0) sys.version 获取Python解释程序的版本信息 sys.maxint 最大的Int值 sys.path 返回模块的搜索路径,初始化时使
1、内存分配的过程是怎样的?应用程序通过 malloc 函数(全称是memory allocation,中文叫动态内存分配)申请内存的时候,实际上申请的是虚拟内存,此时并不会分配物理内存。当应用程序读写了这块虚拟内存,CPU 就会去访问这个虚拟内存, 这时会发现这个虚拟内存没有映射到物理内存, CPU 就会产生缺页中断,进程会从用户态切换到内核态,并将缺页中断交给内核的 Page Fault Ha
为了在多进程环境下,使得进程之间的内存地址不受影响,相互隔离,于是操作系统就为每个进程独立分配一套虚拟地址空间,每个程序只关心自己的虚拟地址就可以,实际上大家的虚拟地址都是一样的,但分布到物理地址内存是不一样的。作为程序,也不用关心物理地址的事情。每个进程都有自己的虚拟空间,而物理内存只有一个,所以当启用了大量的进程,物理内存必然会很紧张,于是操作系统会通过内存交换技术,把不常使用的内存暂时存放到
Linux 操作系统采用了哪种方式来管理内存呢?在回答这个问题前,我们得先看看 Intel 处理器的发展历史。早期 Intel 的处理器从 80286 开始使用的是段式内存管理。但是很快发现,光有段式内存管理而没有页式内存管理是不够的,这会使它的 X86 系列会失去市场的竞争力。因此,在不久以后的 80386 中就实现了页式内存管理。也就是说,80386 除了完成并完善从 80286 开始的段式内
一、什么是内核?内核是操作系统中应用连接硬件设备的桥梁二、内核有什么作用?对于一个现代的操作系统来说,它的内核至少应该提供以下 4 种基本能力:管理进程、线程(决定哪个进程、线程使用 CPU);管理内存(决定内存用来做什么);连接硬件设备(为进程、和设备间提供通信能力);提供系统调用(接收进程发送来的系统调用)。三、内核是怎么工作的?内核具有很高的权限,可以控制 cpu、内存、硬盘等硬件,而应用程
要想知道当前的系统的软中断情况,我们可以使用 top 命令查看,下面是一台服务器上的 top 的数据:上图中的黄色部分 si,就是 CPU 在软中断上的使用率,而且可以发现,每个 CPU 使用率都不高,两个 CPU 的使用率虽然只有 3% 和 4% 左右,但是都是用在软中断上了。另外,也可以看到 CPU 使用率最高的进程也是软中断 kso
在 Linux 系统里,我们可以通过查看 /proc/softirqs 的 内容来知晓「软中断」的运行情况,以及 /proc/interrupts 的 内容来知晓「硬中断」的运行情况。接下来,就来简单的解析下 /proc/softirqs 文件的内容,在我服务器上查看到的文件内容如下:你可以看到,每一个 CPU
前面我们也提到了,中断请求的处理程序应该要短且快,这样才能减少对正常进程运行调度地影响,而且中断处理程序可能会暂时关闭中断,这时如果中断处理程序执行时间过长,可能在还未执行完中断处理程序前,会丢失当前其他设备的中断请求。那 Linux 系统为了解决中断处理程序执行过长和中断丢失的问题,将中断过程分成了两个阶段,分别是「上半部和下半部分」。上半部用来快速处理中断,一般会暂时关闭中断请求,主要负责处理
在计算机中,中断是系统用来响应硬件设备请求的一种机制,操作系统收到硬件的中断请求,会打断正在执行的进程,然后调用内核中的中断处理程序来响应请求。举个生活中取外卖的例子,可能更方便理解。你中午搬完砖,肚子饿了,点了份白切鸡外卖,虽然平台上会显示配送进度,但是你也不能一直傻傻地盯着呀,时间很宝贵,当然得去干别的事情,等外卖到了配送员会通过「电话」通知,电话响了,你就会停下手中地事情,去拿外卖。这里的打
在 Linux 内核中,进程和线程都是用 task_struct 结构体表示的,区别在于线程的 task_struct 结构体里部分资源是共享了进程已创建的资源,比如内存地址空间、代码段、文件描述符等,所以 Linux 中的线程也被称为轻量级进程,因为线程的 task_struct 相比进程的 task_struct 承载的 资源比较少,因此以「轻」得名。一般来说,没有
先来认识 CPU 的架构,只有理解了 CPU 的 架构,才能更好地理解 CPU 是如何读写数据的,对于现代 CPU 的架构图如下:可以看到,一个 CPU 里通常会有多个 CPU 核心,比如上图中的 1 号和 2 号 CPU 核心,并且每个 CPU 核心都有自己的 L1 Cache 和 L2 Cache,而 L1 Cache 通常分为 dCache(数据缓存) 和 iCache(指令缓存),L3 C
1、总线嗅探写传播的原则就是当某个 CPU 核心更新了 Cache 中的数据,要把该事件广播通知到其他核心。最常见实现的方式是总线嗅探(Bus Snooping)。我还是以前面的 i 变量例子来说明总线嗅探的工作机制,当 A 号 CPU 核心修改了 L1 Cache 中 i 变量的值,通过总线把这个事件广播通知给其他所有的核心,然后每个 CPU 核心都会监听总线上的广播事件,并检查是否有相同的数据
前面提到过现在 CPU 都是多核的,由于 L1/L2 Cache 是多个核心各自独有的,L3Cache是多核共用的,那么会带来多核心的缓存一致性(Cache Coherence) 的问题,如果不能保证缓存一致性的问题,就可能造成结果错误。那缓存一致性的问题具体是怎么发生的呢?我们以一个含有两个核心的 CPU 作为例子看一看。假设 A 号核心和 B 号核心同时运行两个线程,都操作共同的变量
了解了CPU Cache的存在背景和CPU Cache 的结构,最理想的情况就是期望 CPU 读取数据的时候,都是尽可能地从 CPU Cache 中读取,而不是每一次都要从内存中获取数据。所以,身为程序员,要尽可能写出缓存命中率高的代码,这样就有效提高程序的性能,但事实上,数据不光是只有读操作,还有写操作,那么如果数据写入 Cache 之后,内存与 Cache 相对应的数据将会不同,这
CPU Cache的数据结构先简单了解下 CPU Cache 的结构,CPU Cache 是由很多个 Cache Line 组成的,Cache Line 是 CPU 从内存读取数据的基本单位,而 Cache Line 是由各种标志(Tag)+ 数据块(Data Block)组成,你可以在下图清晰的看到:CPU Cache 的数据是从内存中读取过来的,它是以一小块一小块读取数据的,而不是按照单个数组
看完上文你有没有想过为什么有了内存,还需要 CPU Cache?原因是这样的,根据摩尔定律,CPU 的访问速度每 18 个月就会翻倍,相当于每年增长 60% 左右,内存的速度当然也会不断增长,但是增长的速度远小于 CPU,平均每年只增长 7% 左右。于是,CPU 与内存的访问性能的差距不断拉大。到现在,一次内存访问所需时间是 200~300 多个时钟周期,这意味着 CP
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号