Debian中国 为您找到相关结果 22

Rust的模块化系统: 包Packages, 箱Crates, 和模块Modules

(); map.insert(1, 2); } 有命名冲突时, 引入父模块use std::fmt; use std::io; fn function1() -> fmt::Result { // --snip-- } fn function2() -> io::Result<()> { // --snip-- } 或用as解决命名冲突的问题use std::fmt::Result; use std::io::Result as IoResult; fn function1() -> Result { // --snip-- } fn function2() -> IoResult<()> { // --snip-- } 引入同一个模块module或包package中的多个元素use std::{cmp...阅读全文

博文 2021-02-20 08:49:51 知乎

Linux 中使用 Fio 测评硬盘性能

Fio(Flexible I/O Tester) 是一款由 Jens Axboe 开发的用于测评和压力/硬件验证的自由开源的软件。它支持 19 种不同类型的 I/O 引擎 (sync、mmap、libaio、posixaio、SG v3、splice、null、network、 syslet、guasi、solarisaio,以及更多), I/O 优先级(针对较新的 Linux 内核),I/O 速度,fork 的任务或线程任务等等。它能够在块设备和文件上工作。 Fio 接受一种非常简单易于理解的文本格式的任务描述。软件默认包含了几个示例任务文件。 Fio 展示了所有类型的 I/O 性能信息,包括完整的 IO 延迟和百分比。 它被广泛的应用在非常多的地方,包括测评、QA,以及验证用途。它支持...阅读全文

博文 2018-08-15 19:18:24 debian.cn

Go 1.16 即将发布,这些变更你需要知道

在前几天,Go1.16rc1 抢先发布了。结合常规的 28 发布规律,其将会在 2021.02 月份左右发布正式版本。 这次 Go1.16 也带来了一些新特性或变更。那么作为一个 Gopher,想必不能错过这次的更新。 今天这篇文章将会带大家了解一下 Go1.16 的几个需要关注的特性。 废弃 io/ioutil Go 官方认为 io/ioutil 这个包的定义不明确且难以理解。所以 Russ Cox 在 2020.10.17 提出了废弃 io/ioutil 的提案。 大致变更如下: Discard => io.DiscardNopCloser => io.NopCloserReadAll => io.ReadAllReadDir => os.ReadDirReadFile...阅读全文

博文 2021-02-17 08:52:12 CSDN博客

架构师详解 Nginx 架构

主进程(master process)生成一个子进程(worker process)出来和客户端建立连接进行交互,直到连接断开,该子进程就结束了。使用进程的好处是各个进程之间相互独立,不需要加锁,减少了使用锁对性能造成影响,同时降低编程的复杂度,降低开发成本。其次,采用独立的进程,可以让进程互相之间不会影响,如果一个进程发生异常退出时,其它进程正常工作,master 进程则很快启动新的 worker 进程,确保服务部中断,将风险降到最低。缺点是操作系统生成一个子进程需要进行内存复制等操作,在资源和时间上会产生一定的开销;当有大量请求时,会导致系统性能下降。 异步非阻塞 每个工作进程使用异步非阻塞方式,可以处理多个客户端请求。当某个工作进程接收到客户端的请求以后,调用 IO 进行处理,如果不能...阅读全文

博文 2018-05-01 23:10:47 debian.cn

如何更改 Linux 的 I/O 调度器

Linux 的 I/O 调度器是一个以块式 I/O 访问存储卷的进程,有时也叫磁盘调度器。Linux I/O 调度器的工作机制是控制块设备的请求队列:确定队列中哪些 I/O 的优先级更高以及何时下发 I/O 到块设备,以此来减少磁盘寻道时间,从而提高系统的吞吐量。 目前 Linux 上有如下几种 I/O 调度算法: noop - 通常用于内存存储的设备。 cfq - 完全公平调度器。进程平均使用IO带宽。 Deadline - 针对延迟的调度器,每一个 I/O,都有一个最晚执行时间。 Anticipatory - 启发式调度,类似 Deadline 算法,但是引入预测机制提高性能。 查看设备当前的 I/O 调度器: # cat /sys/block//queue/scheduler 假设磁...阅读全文

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

Proxmox VE 5.3正式版发布

Proxmox 5.3 默认包含CephFS, 可以直接用Web界面进行配置和管理。相比之下,Proxmox 5.2 版本用 pveceph install 安装,用命令行初始化pveceph init --network网络。在Proxmox VE web管理界面,点几下鼠标就能完成文件系统的创建和配置,以前的版本需要在命令行下完成。 这次官方发布更新的点比较多,这里只挑几个重要的介绍,想详细了解的同学请参考发布记录。 磁盘管理GUI界面(ZFS, LVM, LVMthin, xfs, ext4) CephFS管理GUI界面(MDS) ZFS over iSCSI 插件支持 Linux-IO 目标(LIO Target) 支持模拟运行ARM架构虚拟机(试验特性,搞开发的同学可以体验下...阅读全文

博文 2018-12-05 15:34:51 debian.cn

SK Hynix量产首个4D NAND闪存:96层堆栈 速度提升30%

NAND,4D NAND闪存有很强的商业营销味道。 SK Hynix的4D NAND闪存首先会量产TLC类型的,核心容量分别是512Gbt、1Tb,都是96层堆栈,IO接口速度1.2Gbps,不过两者的BGA封装面积是不一样的,1Tb版显然更大一些。 至于QLC类型的,这个未来会是SK Hynix量产的重点,核心容量1Tb,但量产时间会在明年下半年,还需要一些时间。韩联社报道称,SK Hynix公司4日宣布正式宣布96层堆栈的4D NAND闪存,TLC类型,核心容量512Gb,与现有的72层堆栈3D NAND闪存相比,4D NAND闪存的核心面积减少了30%,单片晶圆的生产输出增加了50%,而且性能也更强——读取速度提升30%,写入速度提升25%。 根据官方所说,4D NAND闪存今年内会量产,而...阅读全文

博文 2018-11-05 23:47:54 debian.cn

Ceph 12.2.0 正式版本发布, 代号 Luminous

。 BlueStore支持Ceph存储的所有的完整的数据和元数据校验。 BlueStore内嵌支持使用zlib,snappy或LZ4进行压缩。(Ceph还支持zstd进行RGW压缩,但由于性能原因,不为BlueStore推荐使用zstd)。 EC池现在完全支持覆盖,允许它们与RBD和CephFS一起使用。 ceph-mgr: ceph-mgr是一个新的后台进程,这是任何Ceph部署的必须部分。虽然当ceph-mgr停止时,IO可以继续, 但是度量不会刷新,并且某些与度量相关的请求(例如,ceph df)可能会被阻止。我们建议您多部署ceph-mgr的几个实例来实现可靠性。 ceph-mgr守护进程daemon包括基于REST的API管理。注:API仍然是实验性质的,目前有一些限制,但未来会成为API管理的基础...阅读全文

博文 2017-08-31 13:36:49 debian.cn

kubelet 绑核与不绑核的性能差别

同一台主机,同样的workload,kubelet 中配置CPU绑定后的性能变化: 绑核的配置放在 /etc/kubernetes/kubelet 中的这两行: ``` FEATURE_GATES="--feature-gates=CPUManager=true" CPU_MANAGER_POLICY="--cpu-manager-policy=static" ``` 绑核前: ``` procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in...阅读全文

Linux内存buffer和cache的区别

冲区,一个用于存储速度不同步的设备或优先级不同的设备之间传输数据的区域。通过缓冲区,可以使进程之间的相互等待变少,从而使从速度慢的设备读入数据时,速度快的设备的操作进程不发生间断。 在Free命令中显示的buffer和cache,它们都是占用内存: buffer : 作为buffer cache的内存,是块设备的读写缓冲区,更靠近存储设备,或者直接就是disk的缓冲区。 cache: 作为page cache的内存, 文件系统的cache,是memory的缓冲区 如果 cache 的值很大,说明cache住的文件数很多。如果频繁访问到的文件都能被cache住,那么磁盘的读IO 必会非常小。...阅读全文

Ruby 2.5.0 稳定版发布

, stringio, strscan, webrick, zlib 从标准库中提升到默认 gem。 升级 Onigmo 到 6.1.3。 添加 缺位运算符。 注意,Ruby 2.4.1 也包含这项改动。 把 bundler 纳入标准库。 更新到 Psych 3.0.2。 更新到 Rubygems 2.7.3。 更新到 RDoc 6.0.1。 词法分析程序由 IRB 更换为 Ripper,极大提升了生成文档的速度。 修正过去这些年存在的缺陷。 支持近些年 Ruby 的新句法。 更新到 Unicode 10.0.0。 Thread.report_on_exception 默认值现为 true,这对调试多线程程序很有帮助。[功能 #14143] IO#write 现接受多个参数 [功能 #9323] 详见...阅读全文

博文 2017-12-25 21:59:41 debian.cn

MySQL 8 第一个正式版发布:更好的性能

MySQL 8.0 系列的首个正式版 8.0.11 已发布,官方表示 MySQL 8 要比 MySQL 5.7 快 2 倍,还带来了大量的改进和更快的性能! 需要注意的是从 MySQL 5.7 升级到 MySQL 8.0 仅支持通过使用 in-place 方式进行升级,并且不支持从 MySQL 8.0 降级到 MySQL 5.7(或从某个 MySQL 8.0 版本降级到任意一个更早的 MySQL 8.0 版本)。作为替代方案,在升级之前请对数据进行全量备份。 本文简要介绍 MySQL 8 中值得关注的新特性和改进。 1. 性能:MySQL 8.0 的速度要比 MySQL 5.7 快 2 倍。MySQL 8.0 在这些方面带来了更好的性能:读/写工作负载、IO 密集型工作负载、以及高竞争...阅读全文

博文 2018-04-20 10:40:18 debian.cn

Linux系统诊断-内存基础

-cachedfree: 未使用的内存 memFree & swapFree in /proc/meminfoshared: tmpfs使用的内存 shmem in /proc/meminfobuffers:被内核缓冲去使用的内存cached: 被页缓存和slabs使用的内存buffers/cache: 表示buffers和cache的总和swap: 交换分区的使用量2.3 buffer和cache会使用内存吗?答案是肯定的,先来了解下buffer和cache。cache(缓存)官方定义是用来弥补高速设备和低速设备之间的访问速度不匹配而预留的一段空间,用来加快资源的访问。 简单讲就是读的更快。buffer(缓冲)是为了做资源写入整形,计算机遇到大量的“小规模IO”时,会将其整形为少量的“大规模IO”,降低写入次...阅读全文

博文 2021-02-11 14:22:42 SegmentFault 思否

Go1.16 新特性:一文快速上手 Go embed

, _ := f.ReadFile("helloworld/hello2.txt") fmt.Println(string(data2)) } 同时既然能够支持目录读取,也能支持贪婪模式的匹配: //go:embed helloworld/* var f embed.FS 可能会有小伙伴注意到,embed.FS 也能调各类文件系统的接口,其实本质是 embed.FS 实现了 io/fs 接口。 只读属性 在 embed 所提供的 FS 中,我们可以发现其都是打开和只读方法: type FS func (f FS) Open(name string) (fs.File, error) func (f FS) ReadDir(name string) ([]fs.DirEntry, error) func (f FS...阅读全文

博文 2021-02-17 08:44:12 CSDN

Docker 17.06 社区版发布

时一次的频次来安排证书轮换。有了Docker CE 17.06,添加了立即强制证书轮换的一次性操作: docker swarm ca --rotate Swarm Mode事件 docker events可以用来从Docker中获取实时的信息。在编写自动化和监控应用时很有用。但是直到Dcoker CE 17.06,都不支持swarm mode的事件。现在docker events将会返回服务、节点、网络和和secret的信息。 专用的数据路线 docker init中添加了新的--datapath-addr标签,可以把swarm mode的管理任务和应用传递的数据隔离开来。这能把集群从IO贪婪的应用中拯救出来。如你用这种方式初始化集群: docker swarm init...阅读全文

博文 2017-06-30 23:08:57 debian.cn

协议介绍之深入了解 gRPC

HTTP header。HTTP header 各个 fields 使用 \r\n 分隔,然后跟 body 之间使用 \r\n\r\n 分隔。解析完 header 之后,我们才能从 header 里面的 content-length 拿到 body 的 size,从而读取 body。 这套流程其实并不高效,因为我们需要读取多次,才能将一个完整的 HTTP 请求给解析出来,虽然在代码实现上面,有很多优化方式,譬如: 一次将一大块数据读取到 buffer 里面避免多次 IO read 读取的时候直接匹配 \r\n 的方式流式解析 但上面的方式对于高性能服务来说,终归还是会有开销。其实最主要的问题在于,HTTP/1.x 的协议是 文本协议,是给人看的,对机器不友好,如果要对机器友好,二进制协议才是更好的...阅读全文

博文 2017-06-22 11:08:48 debian.cn

案例:Redis命令不当 引起数据库雪崩 造成数百万损失

来实现,直接在代码里写前缀的做法要严格避免,这样可维护性实在太差了。 如:系统名:业务名:业务数据:其他 但是注意,key的名称不要过长,尽量清晰明了,容易理解,需要自己衡量 10.线上禁止使用monitor命令 禁止生产环境使用monitor命令,monitor命令在高并发条件下,会存在内存暴增和影响Redis性能的隐患 11.禁止大 string 核心集群禁用1mb的string大key(虽然redis支持512MB大小的string),如果1mb的key每秒重复写入10次,就会导致写入网络IO达10MB; 12.redis容量 单实例的内存大小不建议过大,建议在10~20GB以内。 redis实例包含的键个数建议控制在1kw内,单实例键个数过大,可能导致过期键的回收不及时。 13 可靠...阅读全文

博文 2018-10-27 10:18:18 debian.cn

Docker 核心原理

子系统(即资源控制器) 1 2 3 4 5 6 7 8 root@lxkaka-server:~# lssubsys cpuset # 分配单独的 cpu 节点或者内存节点 cpu,cpuacct # 限制进程的 cpu 使用率;cpu 使用统计 blkio # 限制进程的块设备 io memory # 限制进程的 memory 使用量 devices # 控制进程能够访问某些设备 freezer # 挂起或者恢复 cgroups 中的进程。 net_cls,net_prio # 可以标记 cgroups 中进程的网络数据包,对数据包进行控制 hierarch 层级关系 由一系列控制组以一个树状结构排列而成,hierarch 通过绑定对应的子系统进行资源调度。hierarch 中的...阅读全文

博文 2021-02-24 10:19:06 lxkaka

阿里巴巴版 JDK 首发 GA 版 生产环境可用

版本中,当 JFR 功能被打开,JVM 能以非常小的性能开销记录 Java 运行过程中产生的各种运行时数据。产生的 JFR 数据包含 JVM 运行时的各种微观细节,可以被 JMC(Java Mission Control) 进行分析。JMC 是一个桌面应用程序,通过解析 JFR 数据,JMC 能够高效快速定位线上产品环境的各种故障,分析内存分配热点,方法调用热点,方法调用超时分析,内存泄漏,IO 活动,线程活动等,帮助 Java 用户保证服务稳定。 据了解,阿里巴巴日常开发过程中遇到的很多问题都是通过 JFR 得到解决的,可以说是 Java 故障诊断利器。如上所言,JFR 功能在 OpenJDK 11 以及以上版本才有,但是在阿里巴巴的推动努力下,JFR 功能已经被 OpenJDK 8u 社...阅读全文

博文 2019-07-11 10:24:52 debian.cn

Docker 核心原理

子系统(即资源控制器) 1 2 3 4 5 6 7 8 root@lxkaka-server:~# lssubsys cpuset # 分配单独的 cpu 节点或者内存节点 cpu,cpuacct # 限制进程的 cpu 使用率;cpu 使用统计 blkio # 限制进程的块设备 io memory # 限制进程的 memory 使用量 devices # 控制进程能够访问某些设备 freezer # 挂起或者恢复 cgroups 中的进程。 net_cls,net_prio # 可以标记 cgroups 中进程的网络数据包,对数据包进行控制 hierarch 层级关系 由一系列控制组以一个树状结构排列而成,hierarch 通过绑定对应的子系统进行资源调度。hierarch 中的...阅读全文

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

linux - Go语言中文网

都已使用完,新的读写请求过来后,会把内存中的部分数据写入磁盘,从而把磁盘的部分空间当做虚拟内存来使用。 测试磁盘的IO写速度: dd if=/dev/zero of=test.log bs=8k count=300000 测试磁盘的IO读速度: dd if=test.log bs=8k count=300000 of=/dev/null dd命令可以通用,但不够专业,也没有考虑到缓存和物理读的区分,测试的数据也是仅作参考,不能算是权威。 Linux 中直接 I/O 机制的介绍: ????https://www.ibm.com/developerworks/cn/linux/l-cn-directio/ 直接 I/O 的动机 在介绍直接 I/O 之前,这一小节先介绍一下为什么会出现直接 I/O...阅读全文

博文 2021-01-26 18:17:30 Golang中文社区

Redis 命令、特性介绍与性能调优

、Hyperloglogs等。 Redis具备LRU淘汰、事务实现、以及不同级别的硬盘持久化等能力,并且支持副本集和通过Redis Sentinel实现的高可用方案,同时还支持通过Redis Cluster实现的数据自动分片能力。 Redis的主要功能都基于单线程模型实现,也就是说Redis使用一个线程来服务所有的客户端请求,同时Redis采用了非阻塞式IO,并精细地优化各种命令的算法时间复杂度,这些信息意味着: Redis是线程安全的(因为只有一个线程),其所有操作都是原子的,不会因并发产生数据异常 Redis的速度非常快(因为使用非阻塞式IO,且大部分命令的算法时间复杂度都是O(1)) 使用高耗时的Redis命令是很危险的,会占用唯一的一个线程的大量处理时间,导致所有的请求都被拖慢。(例如时间复杂度为O(N)的...阅读全文

博文 2018-10-27 10:37:55 debian.cn