论文阅读笔记整理(持续更新)-程序员宅基地

技术标签: 论文阅读  KV存储  边缘计算  lsm-tree  缓存  数据库  分离式内存  

KV存储

Replicating Persistent Memory Key-Value Stores with Efficient RDMA Abstraction

OSDI 2023 Paper 泛读笔记

针对使用RDMA优化PM KVS的复制,现有方法存在排队延迟和设备级写放大(DLWA)。本文提出了Rowan,通过RDMA单边动词处理PM KVS的复制写入。聚合来自不同服务器的并发远程写入,并以顺序(因此低DLWA)和单向(因此低延迟)的方式将这些写入降落到PM。(1)让接收器端的控制线程以递增的地址顺序将PM驻留缓冲区推入接收队列。发送方只需要为远程PM写入发出SEND,并等待接收方RNIC生成的ACK。(2)利用两个RNIC硬件功能,共享接收队列(SRQ)和多包接收队列(MP RQ),分别合并来自不同连接的写入并支持可变大小的写入。(3)最小化控制线程的任务来简化Rowan的控制路径。

Cooperative Concurrency Control for Write-Intensive Key-Value Workloads

ASPLOS 2023 Paper 泛读笔记

针对键值存储服务的优化,源系统为了高吞吐量,强制通过跨线程分区写入来避免同步,但会造成负载不平衡,在写为主的负载和读写倾斜的负载性能不佳。本文提出C-4,将写入请求分为两类:可以跨线程平衡的独立请求和必须排队的依赖请求。使用NIC动态分区独立写入,以增加当前KVS设计的负载平衡灵活性,并在KVS中添加软件层,将依赖写入压缩为批处理。

A Generic Service to Provide In-Network Aggregation for Key-Value Streams

ASPLOS 2023 Paper 泛读笔记

针对使用网络内聚合(INA)优化分布式键值存储,现有INA方案是一种同步聚合、而且缺乏系统范围的考虑因素。本文提出用于键值流的INA服务ASK,交换机和主机联合设计的系统,可编程交换机提供尽力而为的聚合服务,主机运行守护进程与应用程序交互。ASK针对流量特性、硬件限制和网络不可靠特性进行了深入优化:(1)协同设计交换机内存布局和主机分组,以实现矢量化,并支持可变长度密钥。(2)设计了主机滑动窗口方案和交换机重复数据消除逻辑,以实现可靠性和正确性,并通过重用主机服务中的持久连接,进一步提高了系统的可扩展性。(3)设计了影子复制机制,以周期性地从交换机获取中间结果,并重置交换机内存,从而使热键有第二次机会保留交换机内存。

In-Memory Key-Value Store Live Migration with NetMigrate

FAST 2024 Paper 泛读笔记

针对分布式键值存储在节点之间迁移键值数据,现有方法需要基于源或目的地或额外记录,在迁移过程中进行服务,造成额外延迟。本文提出NetMigrate,不使用额外资源进行迁移记录,核心思想是用网络跟踪迁移过程,因为网络可以查看集群中的所有数据移动。包括三个关键技术:(1)交换机资源有限的情况下跟踪迁移状态。利用概率数据结构,用布隆过滤器跟踪密钥是否已完成迁移,用计数布隆过滤器跟踪密钥当前是否正在迁移。(2)迁移过程中维护数据一致性。设计了一种错误处理方法,如果对数据所有权有绝对的信心,交换机将查询路由到相应的位置;否则,交换机会发出少量复制查询。(3)支持多样化的迁移策略。可以从源端调整其交换机上的数据结构和资源预算,以优化各种性能目标,例如最小化迁移时间和最大化查询吞吐量。

IonIa: High-Performance Replication for Modern Disk-based KV Stores

FAST 2024 Paper 泛读笔记

针对写优化键值存储(WO-KV)的副本管理。现有复制协议:浪费了高写性能,只提供了较低的写吞吐量,因为必须在单个线程上顺序写入;较差的读性能,将读取限制在只访问主副本。本文提出IONIA,利用了基于SSD的WO-KV存储的独特特性优化复制协议。(1)利用接口特性将并行执行推迟到后台,从而实现高吞吐量的一次往返(RTT)写入。(2)在任何副本上进行读取,同时无需强制写入所有副本。为了处理滞后的从副本,对于每个从副本的读取,IONIA在主副本处执行检查(一个元数据查询),以验证从副本返回的结果。(3)为了实现1RTT读取,IONIA将读取发送给从副本,同时将元查询并行发送给主副本。通过客户端一致性检查机制,主副本返回足够的关于正在读取的键的信息,而客户端则决定从副本结果是否为最新。

Calcspar: A Contract-Aware LSM Store for Cloud Storage with Low Latency Spikes

ATC 2023 Paper 泛读笔记

针对亚马逊EBS存储,探索其合同模型和延迟特性,发现超过付费IOPS的请求会显著增加延迟,而LSM存储又会放大工作负载的波动并产生内部请求拥塞。本文对亚马逊EBS下的LSM存储进行优化,来降低尾延迟:(1)利用波动感知缓存,通过热点感知进行主动预取,识别高负载时段的热点,并在低负载时段主动提取热点。通过偏移感知的被动缓存,在高负载期间利用时间局部性来挤出过时的预取数据,并在不发出额外请求的情况下适应热点转移。(2)利用拥塞感知的IOPS分配器为不同的内部请求分配优先级,采用多队列结构防止线程拥塞。通过机会压缩将不同LSM级别的写入请求分配到不同的优先级队列中,从而平衡读取放大和写入节流。

DEPART: Replica Decoupling for Distributed Key-Value Storage

FAST 2022 Paper 泛读笔记

对于KV存储中的副本管理进行优化,现有方法实验同一索引结构中管理所有副本,例如LSM-Tree,会导致复制冗余之外的大量I/O成本。本文提出副本解耦,将主副本和冗余副本分离。使用LSM树管理主副本,以便以更轻量级的方式保留LSM树的设计特性;使用两层日志来管理冗余副本,通过只追加的全局日志保证冗余副本写入速度,将全局日志根据用户需要拆分为多个本地日志,分别优化读(写)性能;按不同的密钥范围组织KV对,将恢复操作限制为仅访问KV对的相关范围,提升故障恢复性能。

Pacman: An Efficient Compaction Approach for LogStructured Key-Value Store on Persistent Memory

ATC 2022 Paper 泛读笔记

设计适合PM的日志结构键值存储Pacman,提出四个优化点:将压缩过程中的引用搜索卸载到服务线程,以减轻繁重的索引遍历开销;利用标记指针来减少高延迟的PM读取,将频繁访问的元数据存储在DRAM中,以减少小的随机PM写入,避免垃圾收集引入过多的PM访问;根据PM特性以批处理模式重新设计压缩管道,以降低持久性开销;以轻量级方式分离冷对象和热对象,以减少压缩中的PM数据复制。

DyTIS: A Dynamic Dataset Targeted Index Structure Simultaneously Efficient for Search, Insert, and Scan

EuroSys 2023 Paper 泛读笔记

针对复杂数据集的索引,如何同时高效的支持搜索、插入和扫描。本文提出DyTIS:基于可扩展哈希结构,利用数据集键分布的累积分布函数(CDF),并随着数据集的增长学习和调整其结构;通过自然键顺序对键进行分组,并在每个存储桶中按排序顺序维护键,以支持哈希索引的扫描操作;通过重映射函数,将非均匀密钥重新分配到均匀分布中,同时保持密钥的自然顺序。

ROART: Range-query Optimized Persistent ART

FAST 2021 Paper 泛读笔记

针对NVM场景下的持久存储设计,如何同时实现功能性(可变大小的key和范围查询)、性能(低持久性开销)、正确性(异常处理和内存安全)。作者提出基于基数树的持久索引:为了优化范围查询:提出叶子压缩方法,延迟了叶分割,并将多个叶节点压缩成一个叶数组;为了优化持久性开销:提出条目压缩,将关键字和子指针组合在一个8字节的条目中;为了优化持久性开销:选择性元数据持久化,以减少要持久化的元数据树量;为了优化持久性开销:提出最小有序分割,放松分割操作中的步骤顺序以减少sfence指令的数量;为了正确性:设计了快速的内存管理以防止内存泄漏,同时进行崩溃后垃圾收集,在恢复期间执行后台GC时,索引可以同时处理前台请求,实现立即重新启动服务。

KVIMR: Key-Value Store Aware Data Management Middleware for Interlaced Magnetic Recording Based Hard Disk Drive

ATC 2021 Paper 泛读笔记

针对基于IMR的HDD上的基于LSM-tree的KV存储优化。作者提出KV存储和HDD间的中间件:采用了压缩感知的路径分配方案,在保持数据文件(SSTables)同时最小化耗时的RMW,在压缩过程中有效地访问数据文件,补救了吞吐量下降,并提高了压缩效率;利用了合并RMW方法,以提高将KV存储系统的多路文件持久化到IMR路径的效率,其关键思想是将多个逐轨RMW重新排序为一个合并的RMW,同时仍确保崩溃一致性。

Differentiated Key-Value Storage Management for Balanced I/O Performance

ATC 2021 Paper 泛读笔记

同时优化LSM-tree的读、写、范围查询性能。作者提出使用传统的LSM树管理键,在LSM树的每个级别内具有完全排序,同时以一种协调的方式管理值,使其相对于键的完全排序具有部分排序的顺序,以保持高扫描性能;通过状态感知的惰性GC方案来实现高空间效率和高性能;提出了细粒度的KV分离,区分小型、中型和大型KV对的管理,以实现混合工作负载下性能平衡;提出了热感知多日志设计,用于有效管理大型KV对。

ROLEX: A Scalable RDMA-oriented Learned Key-Value Store for Disaggregated Memory Systems

FAST 2023 Paper 泛读笔记

针对分离式内存系统中,KV存储性能不高的问题,由于内存节点资源有限,现有方法难以直接修改B树或学习索引的模型。作者提出提出了ROLEX,一种可扩展的面向RDMA的有序键值存储,使用分解存储系统的学习索引。包括几个优化点:插入和再训练操作解耦,使计算节点能够直接通过单边RDMA动词修改远程数据,而无需再训练模型,提高可扩展性;其他计算节点通过具有一致性保证的旧模型来识别新修改的数据;异步使用专用计算资源重新训练模型,以提高模型的准确性。

RubbleDB: CPU-Efficient Replication with NVMe-oF

ATC 2023 Paper 泛读笔记

在包含多个数据副本的KV存储系统中,如何减少压缩的CPU利用率。作者利用网络和NVME-oF,在单个节点上压缩,压缩后传输到其他复制节点上。为了实现文件系统的同步,提出为数据预分配固定的磁盘空间,通过维护映射表确保复制节点的文件系统同步。为了实现应用级同步,提出在副本之间应用版本编辑顺序的方法,确保各复制节点执行顺序一致,避免删除导致的节点间不一致问题。

All-Flash Array Key-Value Cache for Large Objects

EuroSys 2023 Paper 泛读笔记

针对AFA规模的KV缓存系统,用于大型对象。针对三个挑战:(1)庞大的元数据导致的高索引开销,(2)过期对象造成的空间浪费,(3)频繁的SSD故障导致的服务中断。为了解决这些问题并提高缓存命中率,提出三种技术:无视冲突的两级哈希表,使用紧凑的每个对象 16B 元数据,将整个哈希表存储在 SSD 中,将热门条目通过组相连缓存在 DRAM 中;近似TTL管理,将 TTL 相似的对象存储到同一空间,使用粗粒度分组快速识别过期对象;反应式容错机制,跨分片缓存空间处理故障,仅在故障显现时处理,将分片与故障隔离来保持高可用性,无需奇偶校验的开销。

Vigil-KV: Hardware-Software Co-Design to Integrate Strong Latency Determinism into Log-Structured Merge Key-Value Stores

ATC 2022 Paper 泛读笔记

针对生产环境的日志结构合并的键值存储(LSM KV),如何保证确定性的延迟。作者提出硬件和软件协同设计的框架:通过启用可预测的延迟模式(PLM)接口,在特定的时间窗口强制执行确定性的读取延迟;在系统级别上,通过在多个物理功能内部调度 PLM 的不同设备状态,来隐藏与 SSD 的内部任务和/或写服务相关的非确定性时间窗口;进一步调度压缩/刷新操作和客户端请求,将强大的延迟确定性集成到 LSM KV 中。

Tebis: Index Shipping for Efficient Replication in LSM Key-Value Stores

EuroSys 2022 Paper 泛读笔记

针对包含多个数据副本的KV存储系统,如何减少压缩和CPU利用率。作者提出只在主节点进行压缩,并将预构建的索引发送到备份节点,减少备份节点的I/O放大、CPU开销和内存利用率;提出备份节点上索引的高效重写机制,通过创建主备节点间段的映射,通过映射重写备份中的设备位置;利用RDMA进行数据传输,减少CPU开销和通信操作。

ChameleonDB: a Key-value Store for Optane Persistent Memory

EuroSys 2021 Paper 泛读笔记

针对PM环境下的KV系统,利用PM的两个特点:作为块设备以256B为单元写入,具有高读取性能。设计了ChameleonDB,为混合内存/存储设备设计的KV存储系统。使用LSM树结构以低写放大的方式高效地接收写入;利用DRAM中的哈希表,以绕过LSM树的多个层级,实现快速读取;在后台维护LSM多级结构,以实现快速的崩溃恢复;使用动态读取保护模式,使用混合结构吸收突发的写入工作负载,避免读取长尾延迟。

Improving Performance of Flash Based Key-Value Stores Using Storage Class Memory as a Volatile Memory Extension

ATC 2021 Paper 泛读笔记

利用存储类存储器SCM(类似PM)优化KV存储的成本,作为DRAM和闪存的中间硬件,保证性能的同时降低成本。作者对Facebook上的所有基于闪存的KV存储部署进行分析,确定优化目标,为优化读性能;确定了RocksDB最大的内存消耗组件,用于提供读请求的块缓存,设计利用DRAM和SCM的延迟差异的混合分层缓存。DRAM充当第一层缓存,存储频繁访问的数据,SCM充当第二层缓存,存储不太经常访问的数据;设计了管理DRAM和SCM之间数据传输的缓存接纳和内存分配策略。

日志结构存储

MiDAS: Minimizing Write Amplification in Log-Structured Systems through Adaptive Group Number and Size Configuration

FAST 2024 Paper 泛读笔记

针对日志结构存储GC开销高的问题,如何降低写放大。本文提出MiDAS,采用多组的链式结构,按年龄隔离数据块。(1)使用分析模型,更新间隔分布(UID)和基于马尔可夫链的分析模型(MCAM),根据工作负载I/O模式动态调整组的数量及其大小,从而最大限度地减少数据块的移动。(2)将热块隔离到专用的HOT组,其中的HOT大小根据工作负载进行动态调整,以最小化总体写放大。

Building an Efficient Key-Value Store in a Flexible Address Space

EuroSys 2022 Paper 泛读笔记

针对数据管理应用程序需要按序排序数据,但现有文件系统无法支持原地更新,导致大量的数据重写和为支持原地更新的额外间接层开销。本文提出基于B+Tree优化的FlexTree,将地址空间移动时间减少到 (log ) ;基于FlexTree提出FlexSpace,基于日志的空间管理以提高写入效率,基于数据访问局部性执行碎片整理以降低成本,基于逻辑日志记录 [50, 67] 以低成本提交元数据更新;在FlexSpace上实现了FlexDB,在持久的灵活地址空间中维护所有 KV 对的完全排序顺序,无需使用复杂的间接方式或进行密集的数据重写。

SpanDB: A Fast, Cost-Effective LSM-tree Based KV Store on Hybrid Storage

FAST 2021 Paper 泛读笔记

针对NVMe SSD和SATA SSD结合的异构存储系统,优化基于LSM-tree的KV存储。作者提出将大部分数据存储在SATA SSD上,将LSM树的顶层和预写式日志(WAL)存储在NVMe SSD上;通过SPDK实现快速且并行的访问,绕过Linux I/O堆栈,优化WAL写入;设计基于轮询I/O的异步请求处理流水线,去除了不必要的同步,将I/O等待与内存处理重叠,并自适应地协调前台/后台的I/O;根据KV工作负载自适应地对数据分区,利用SATA SSD的带宽缓解写放大。

Revisiting Secondary Indexing in LSM-based Storage Systems with Persistent Memory

ATC 2023 Paper 泛读笔记

针对PM上基于LSM的存储,如何高效支持二次索引。要解决的两个问题是:二次索引KV对很小,LSM树查找低效;二次索引KV对不唯一,需要搜索LSM树的所有级别,还需要检查主表来验证。为此设计PERSEID,有三个关键技术:为二级索引在PM上设计数据结构,实现高性能的插入和查询。利用基于PM的索引,并通过特定的值层来增强,该值层考虑了PM和二次索引的特性,用混合对数结构方法和B+-Tree叶节点的方式工作,对PM和二次索引友好;轻量级的混合PM-DRAM和基于哈希的验证方法,使用PM上的哈希表来记录最新版本的主键,在DRAM上采用了验证哈希表的小镜像,不仅节省了DRAM内存空间,还减少了缓存污染;设计两种优化,以加速非索引查询。直接定位带有附加辅助信息的KV对,减少索引操作,并通过匹配分层压缩策略绕过布隆过滤器检查。用多个线程并行查询。

REMIX: Efficient Range Query for LSM-trees

FAST 2021 Paper 泛读笔记

针对LSM树同时优化读写性能的问题,现有方法通过压缩提升读性能,但会导致读放大或写放大。作者利用新存储硬件的性能,随机读和顺序读性能相近,因此提出构建逻辑排序视图优化范围查询,因为减少了真正的压缩操作,同时减少了写放大。

ADOC: Automatically Harmonizing Dataflow Between Components in Log-Structured Key-Value Stores for Improved Performance

FAST 2023 Paper 泛读笔记

对LSM-KV中写停顿现象进行分析,发现之前的分析原因是有效的,但并不普遍适用。通过实验分析写停顿的原因是数据溢出,指由于数据流入其中一个组件而导致LSM-KV系统中一个或多个组件迅速扩展。提出了ADOC(自动数据溢出控制)的调整框架,在组件之间平衡和协调数据流,以调整系统配置:线程数和批处理大小,而不是简单地等待溢出的数据按默认方式消耗。从而缓解写停顿的问题。

分离式内存

Scaling Up Memory Disaggregated Applications with Smart

ASPLOS 2024 Paper 泛读笔记

对RNIC内部架构进行深入分析,发现内存分解应用吞吐量受到三个主要的瓶颈的限制:(1) 门铃寄存器的隐式争用;(2) 由于过多未完成的工作请求引起的缓存崩溃; (3) 由于CAS重试失败导致的IOPS浪费。针对3个问题作者分别提出解决方案:通过通用的线程感知RDMA资源(例如门铃寄存器)分配机制,来解决门铃寄存器的隐式争用;提出了一种基于信用的节流策略,其中深度阈值是根据当前工作负载自动确定的,解决由于过多未完成的工作请求引起的缓存崩溃;提出了一种自适应退避技术,抑制不成功的CAS(compare-and-swap)操作的并发性,解决CAS重试失败导致的IOPS浪费。

DiLOS: Do Not Trade Compatibility for Performance in Memory Disaggregation

EuroSys 2023 Paper 泛读笔记

针对基于分页的分离式内存系统优化。提出DiLOS:(1)为内存分解构建自己的数据路径,而不使用缓慢的内核交换子系统,显著降低延迟;(2)结合性能优化技术,如预取、后台写回和快速RDMA通信;(3)提供API以指南的形式集成应用程序语义,实现了两个指南示例:支持应用程序感知的预取器,使用指南作为提高性能的提示。减少带宽的内存回收器,在计算节点和存储器节点之间迁移页面时,使用来自用户级存储器分配器的提示来排除页面中未使用的区域。

分层内存

Re-architecting I/O Caches for Emerging Fast Storage Devices

ASPLOS 2023 Paper 泛读笔记

针对使用超快存储设备作为SSD的缓存层场景。本文提出了一个实验评估框架,以系统地检查新兴超快设备的I/O缓存模块的行为。提出了几种增加IOPS降低尾延迟的设计思路:(1)将缓存查找线程的数量和CPU核数量匹配并使用细粒度锁。(2)延迟提升未命中的块可以更好的利用后端SSD阵列。(3)延迟刷新缓存中的脏快,绕过缓存直接写入后端SSD,避免缓存争用。

Johnny Cache: the End of DRAM Cache Conflicts (in Tiered Main Memory Systems)

OSDI 2023 Paper 泛读笔记

针对DRAM和PMEM的分层内存系统,如何优化内存分配,基于硬件的分配方法,用DRAM作为PMEM的缓存,但缓存冲突率高。本文提出Johnny Cache,低开销冲突避免技术。(1)静态技术,在页面分配时避免页面间冲突。在分配新的PMEM物理页时,从DRAM缓存位置出发,先选择未使用的DRAM位置,随后将PMEM页分配到该位置。(2)动态技术,依赖于监视内存访问来区分冷热页面。当同一个缓存中出现两个热页,将其中一个热页重新映射到其他缓存上。

Memtis: Efficient Memory Tiering with Dynamic Page Classification and Page Size Determination

SOSP 2023 Paper 泛读笔记

针对分层内存,现有方法对冷热页面划分不准确、不能动态调整页面大小。本文提出Memtis,可以动态确定页面位置和页面大小。(1)提出内存访问分析器。使用Intel PEBS(Processor Event-Based Sampling)工具实现,对LLC load misses和store指令进行采样,获取物理地址,统计页访问计数,将其表示在页面访问分布直方图中。(2)动态迁移冷热页面。根据页面访问分布直方图动态调整阈值,区分冷热页面,热页面常驻快速层,有额外空间容纳冷页面。将冷热变化页面计时迁入或迁出快速层。(3)动态确定页面大小。默认使用大页,根据访问频率评估大页的访问倾斜度和拆分收益,选取拆分收益大的大页进行拆分。

vTMM: Tiered Memory Management for Virtual Machines

EuroSys 2023 Paper 泛读笔记

针对虚拟化场景的分层存储系统,核心思想是将热页面放在快速内存,冷页面放在慢速内存,通过页面跟踪、分类和迁移来实现这一目标。本文提出了vTMM,包括4个创新点:(1)通过页面修改日志记录(PML)和多级队列设计来跟踪内存访问。只扫描PML记录的脏的客户页表(GPT),减少跟踪页面数量。采用多级队列,降低频繁访问页面的跟踪频率。(2)量化页面温度,并使用桶排序进行细粒度页面分类。页面的温度是其读写频率的加权组合,其中权重分别来自读和写的成本。根据页面温度进行桶排序,并根据VM快速内存的大小分配热集。(3)使用PML执行页面迁移。并行复制页面,在迁移后主动填充Intel扩展页表(EPT)的新映射,以避免EPT页错误引起的VMTraps。(4)通过二维页表透明地调整VM内存的大小来避免资源过度使用。用共享内存池来动态分区内存,动态迁移慢速内存的分配,提高了慢速内存的利用率和整体性能。

边缘计算

R2: A Distributed Remote Function Execution Mechanism With Built-In Metadata

TON 2023 Paper 泛读笔记

针对边缘计算场景,如何以分布式的方式选择最优执行者,以获得执行任务的最小端到端延迟。作者利用命名数据网络(NDN),设计了包括数据、函数名、函数参数的命名结构;根据客户端函数请求到数据源检索数据,同时根据检索过程中的数据摘要、节点状态、网络条件选择执行器;提出了停止条件,减少执行器的选择范围和选择时间。

数据库

Removing Double-Logging with Passive Data Persistence in LSM-tree based Relational Databases

FAST 2022 Paper 泛读笔记

针对基于LSM树的数据库,如何避免双重日志记录问题。作者提出了被动数据持久性方案(PASV),在LSM层完全删除预写日志(WAL),包括三个部分:创建了一个特殊的数据结构,称为Flush Flag,以传递关键的RDB层语义,包括关键数据持久点、每个KV项的逻辑序列号等;提出了被动内存缓冲区刷新策略,为每个LSM树传递一个刷新标志及其在存储引擎中的常规刷新操作,在不需要显式刷新内存缓冲区的情况下,避免刷新造成的性能影响;开发了基于Epoch的持久性(EBP)策略来确定全局数据持久性点,保证只需要执行部分数据恢复即可恢复必要的数据,并消除系统崩溃前已经持久化的冗余KV操作。

Distributed Transactions at Scale in Amazon DynamoDB

ATC 2023 Paper 泛读笔记

目标在不影响客户所期望的规模、可用性、耐用性和可预测性的情况下,将事务添加到DynamoDB。作者时间戳排序将事务设计为具有乐观并发控制的单次操作,以确保事务既可串行化又可扩展。同时实现各种事务要求:事务作为单一请求提交;事务依赖于事务协调器,而非事务操作则绕过两阶段协调器;事务原地更新项目;事务不获取锁;事务使用时间戳按顺序排序。

Evolution of Development Priorities in Key-value Stores Serving Large-scale Applications: The RocksDB Experience

FAST 2021 Paper 泛读笔记

对广泛使用的RocksDB发展方向进行总结 ,根据实际生产中面临的挑战不断优化RocksDB性能。资源优化目标从写放大演变到空间放大,再到CPU利用率;资源分配需要在不同的RocksDB实例之间进行管理;数据格式需要保持向前和向后兼容,以允许增量式的软件部署;需要适当支持数据库复制和备份;需要在系统的每一层次上更早地检测到数据损坏错误。

虚拟机

Efficient Memory Overcommitment for I/O Passthrough Enabled VMs via Fine-grained Page Meta-data Management

ATC 2023 Paper 泛读笔记

针对虚拟机内存过度使用场景,I/O透传导致的DMA故障问题。现有方法会由于内存备份/回收导致性能低,或不能保证DMA安全,或引入高通信开销。作者提出V-Probe,利用对客户代码的分析主动检测客户空闲页面,避免了与客户的通信开销;利用细粒度的页面元数据管理,不仅管理回收的空闲页面的内存映射,还监视它们对应的页面元数据,使得能够对客户端内存分配事件做出反应并防止潜在的DMA失败。

局限性:需要对客户端源码进行分析来检测客户空闲页面,在云场景不适用。

Making Dynamic Page Coalescing Effective on Virtualized Clouds

EuroSys 2023 Paper 泛读笔记

针对虚拟化云场景,在主机端和访客端有不同的TLB,当二者的页面无法对其时会显著降低TLB性能。本文提出Gemini,用于指导访客和主机中大页的形成和分配。一层的内存管理会感知到另一层的大页,并仔细管理与这些大页对应的内存区域。指导页面合并和大页分配时,首先考虑对应区域,然后再考虑其他内存区域。由于大页优先从这些区域形成和分配,因此可以增加由主机大页支持的访客大页,而不会加剧大页带来的不利影响。

故障检测

Model Checking Guided Testing for Distributed Systems

EuroSys 2023 Paper 泛读笔记

针对分布式系统的故障检测。作者提出Mocket,需要给定目标分布式系统的TLA+规范,分析规范生成的验证状态,为系统实现生成测试用例。将 TLA+ 规范映射到系统实现中的相应代码之后,进一步确定性地强制系统执行遵循从验证规范生成的测试用例。在系统测试期间,监视系统的运行时状态并将其与 TLA+ 规范中的相应验证状态进行比较。并发现目标分布式系统中的错误。

缓存

FIFO Queues are All You Need for Cache Eviction

SOSP 2023 Paper 泛读笔记

针对缓存算法优化,本文发现在偏斜工作负载中的大多数对象只会在短窗口内访问一次。设计了S3-FIFO,通过一个小的FIFO队列,过滤掉大多数进入主缓存的对象,从而提供有保证的降级速度和高的降级精度。使用三个FIFO队列:小FIFO队列(S)、主FIFO队列(M)、幽灵FIFO队列(G)。S使用10%的缓存空间,M使用90%的高速缓存空间,G存储与M相同数量的幽灵条目(无数据)。首次访问插入S队列频率为0,再次访问频率加一,S满时根据访问次数逐出到G或M队列。G中元素再次访问时插入M队列,长时间没访问则逐出。M中元素每次访问则访问频率加一,M满时循环减少访问频率并逐出频率为0的元素。

Adaptive Online Cache Capacity Optimization via Lightweight Working Set Size Estimation at Scale

ATC 2023 Paper 泛读笔记

针对在线环境下如何提高缓存效率。本文设计轻量级的数据结构Cuki,在低开销下,用滑动窗口在线估计动态工作集大小(WSS)和项目重复率(IRR),利用逐项目的细粒度跟踪机制增加准确率。对算计进行细粒度并发控制,通过机会老化,降低高并发场景中的锁争用风险。采用分段锁和基于两阶段的插入机制,保证并发访问的数据一致性。利用Cuki在线估计缓存未命中率曲线(MRC),从而在线调整缓存大小以适应当前工作负载。

FrozenHot Cache: Rethinking Cache Management for Modern Hardware

EuroSys 2023 Paper 泛读笔记

本文对缓存算法进行优化,发现多数工作负载中数据高度倾斜,且短期热点稳定。本文提出FrozenHot,将缓存空间划分为两部分:冻结缓存和动态缓存。冻结缓存通过消除缓存管理和锁,以最小的延迟为热对象的请求提供服务。冻结缓存不随时更新,而是定期重建以适应工作负载的变化,使用轻量级后台控制器,根据访问模式、并发级别和缓存大小自适应地选择冻结缓存大小。动态缓存利用现有的缓存设计来实现工作负载自适应。

网络存储系统

Rio: Order-Preserving and CPU-Efficient Remote Storage Access

EuroSys 2023 Paper 泛读笔记

针对网络存储系统由于顺序执行导致CPU和IO性能下降。本文提出Rio,一个保序网络存储堆栈。允许异步处理有序写入、合并连续有序请求、使用顺序保留技术来强制执行持久性顺序。原理是添加了特殊结构,嵌入在原始请求中,使乱序执行的请求随时可以重建原始顺序。

提出两个建议:I/O堆栈应该利用现代NIC和SSD的异步接口(即多个深层硬件队列和异步DMA引擎),以充分利用其高带宽;尽管块合并对于超低延迟SSD上的本地I/O堆栈来说是昂贵的,但值得在块合并中投入一些CPU周期,以显著减少网络上的控制操作(例如,RDMA SEND),并进一步提高CPU和I/O效率。

调度

Understanding and Optimizing Workloads for Unified Resource Management in Large Cloud Platforms

EuroSys 2023 Paper 泛读笔记

对大型数据中心的统一调度工作负载进行了全面的分析,提出了生产工作负载的一些特征:统一调度尽力而为(BE)和延迟敏感(LS)应用程序,可以提供性能保证和高资源利用率;目前生产环境总体资源利用率很低,平均不到30%;现有调度器有很长的调度延迟,并且调度延迟遵循重尾分布;现有的资源预测器不准确,往往会严重高估;同一应用程序中的任务表现相近,可以根据相应物理主机上的资源争用来很好地分析任务的运行性能;通过机器学习算法,可以根据QPS、pod资源利用率、主机资源利用率、相对于pod和主机资源使用率,来配置每个延迟敏感应用的压力停止信息(PSI)。

设计了一个统一调度器Optum,关键之处在于基于机器学习实现了准确的资源使用预测。基于此构建了一个全局优化框架,以最大限度地提高资源利用率,同时确保应用程序性能。同时优化可扩展性,降低调度开销。

DREAM: A Dynamic Scheduler for Dynamic Real-time Multi-model ML Workloads

ASPLOS 2024 Paper 泛读笔记

针对实时多模型ML(RTMM)工作负载设计调度器,需要同时考虑多种挑战:异构的ML模型;动态性;数据和控制依赖性;设备计算和能量受限;实时要求。本文提出调度器DREAM,可以有效地处理RTMM系统中实时性、并发性、多模型、多任务的挑战。(1)对于实时性和并发性,提出了MapScore评分指标,同时考虑了紧迫性和公平性。(2)对于级联模型的复杂依赖,跟踪输入帧内和多个帧之间的模型依赖性。(3)对于动态性,开发了具有可调参数的动态调度方法,快速有效地适应工作负载的变化。(4)支持各种基于加速器的ML系统,包括具有异构大小和数据流的多加速器。(5)提出抢先丢帧方法,当预计会违反截止日期时,该方法会提前丢帧,有助于跨帧和模型进行全局优化。(6)超网切换,利用权重共享超网,在重系统负载下动态切换到较轻的模型变体来改进ML系统调度器。

生产环境系统

What’s the Story in EBS Glory: Evolutions and Lessons in Building Cloud Block Store

FAST 2024 Paper 泛读笔记

对生产环境中的阿里EBS的设计进行总结。EBS开发的三个阶段:EBS1,虚拟磁盘(VD)到物理磁盘原地更新,对虚拟磁盘的独占管理;EBS2,日志结构设计,VD分段;EBS3,使用在线EC/压缩来减少流量放大,融合写入引擎(FWE)和基于FPGA的硬件压缩。

总结开发过程中的经验教训:(1)在延迟、吞吐量、IOPS和容量方面实现高弹性。构建了EBSX,由持久内存支持的单跳架构,最小化平均延迟。使用I/O专用线程来减轻尾部延迟。在前端BlockClient中,将处理从内核转移到用户空间,在FPGA中进行硬件卸载来优化堆栈。在后端BlockServer中,利用高并行度实现高效的吞吐量/IOPS控制。(2)最小化单个、区域和全球故障事件的爆炸半径来提高可用性。开发了联合块管理器将VD组织成小型组,并使用控制管理器进行协调。在数据平面上,构建逻辑故障域,以限制段迁移的目的地。(3)识别各种硬件卸载方案的动机和权衡。BlockClient从FPGA卸载开始,转向基于ASIC的解决方案。BlockServer最初选择FPGA来加速EC/压缩,转向多核ARM CPU作为后续方法。

I/O

zIO: Accelerating IO-Intensive Applications with Transparent Zero-Copy IO

OSDI 2022 Paper 泛读笔记

针对IO密集型应用的零拷贝IO。本文提出zIO,关键思路是:应用程序通常只修改其处理的数据的一部分。(1)乐观地假设大多数数据保持不变。为了保持一致性,中间数据区域保持未映射状态,如果应用程序试图修改任何中间数据区域,zIO通过页面故障拦截访问,并对页面执行复制和重映射。为了处理未对齐的内存区域,zIO执行未对齐区域的复制,只保留未映射的页面对齐部分。(2)避免数据跟踪开销损害应用程序性能,zIO根据每个IO动态决定何时跟踪和何时复制。如果IO缓冲区的大小小于16KB,则zIO会复制该缓冲区。zIO跟踪页面错误的平均数量,并消除每个缓冲区的复制字节。如果访问的字节与从副本中消除的字节的比率超过6%,zIO会复制缓冲区。(3)使用内核旁路IO堆栈,消除跨IO堆栈API的副本。内核旁路堆栈使用共享内存实现,允许zIO在IO从IO设备到达时跟踪,并消除副本。(4)利用非易失性存储器(NVM)实现:乐观输入持久化。如果从IO堆栈接收的输入由应用程序通过存储堆栈持久化在NVM中,则实现副本到存储的端到端透明消除。为此扩展了zIO以识别NVM映射。如果原始数据已经存在于NVM中,则可以消除到NVM的数据拷贝。

I/O Passthru: Upstreaming a flexible and efficient I/O Path in Linux

FAST 2024 Paper 泛读笔记

许多新的存储功能/接口不能很好地适应块层,并且由于Linux中缺乏适当的系统调用接口而面临采用变化。因此,之前只有两种选择:(1)在可能存在的块接口上使用同步NVMe直通,(2)切换到内核旁路解决方案。本文在内核中添加新的直通路径来创建一个新的替代方案。此路径将NVMe字符接口与io_uring相结合。并将此路径集成到各种用户空间库/工具,说明如何简化FDP SSD、端到端数据保护和计算存储的启用。还在io_uring中引入了ioctl的替代方案。io_uring_command基础设施确保io_uring功能不仅限于现有机制(即经典的读/写或其他已建立的系统调用),而且还可以应用于新的原语。

崩溃恢复

Snapshot: Fast, Userspace Crash Consistency for CXL and PM Using msync

ICCD 2023 Paper 泛读笔记

针对故障原子性msync()的优化,现有方法存在:写放大;脏页跟踪开销;上下文切换开销。本文提出了Snapshot:(1)使用基于编译器的注释,透明的跟踪用户空间中的更新,避免了上下文切换开销,并在调用msync() 时将其与可字节寻址的备份存储副本同步。(2)在DRAM中保留应用程序数据的副本,降低访问延迟。(3)仅在调用msync() 时自动跟踪和同步更改,从而提供了崩溃一致性保证。

RDMA

Flor: An Open High Performance RDMA Framework Over Heterogeneous RNICs

OSDI 2023 Paper 泛读笔记

针对异构RNIC场景,如何避免异构带来的PFC依赖性、异构RNIC的互连性、硬件绑定的拥塞控制方案。本文提出了Flor,通过软硬件协同设计将RDMA传输的数据路径和控制路径分离。通过软硬件协同设计加强了可靠连接(RC)传输,以克服基于硬件的低效率GoBack-N重传。利用不可靠连接(UC)传输支持无序需求。采用不可靠数据报(UD),实现RoCEv2的选择性重传[36]。负载感知动态分块模块在性能和软件控制粒度之间进行平衡。实现了类似于Swift的基于RTT的拥塞控制算法,将RTT测量精度提高了10倍。还可以采用新兴的拥塞控制方案和传输协议的优化,而不是等待数月或数年的硬件升级。

TeRM: Extending RDMA-Attached Memory with SSD

FAST 2024 Paper 泛读笔记

优化用SSD扩展RDMA连接的内存,现有方法在处理页面故障时效率低。本文提出了TeRM,主要思想是消除关键路径中的RNIC和CPU页面故障。(1)消除RNIC页面故障。对于SSD驻留页面,使RNIC页表指向包含预定义模式的保留物理页面。对于读取请求,客户端首先通过RDMA read获取数据,并识别页面是否在SSD上。然后,客户端使用RPC从服务器检索SSD驻留页面,但不需要对内存驻留页面进行任何额外操作,从而在常见情况下确保快速远程访问。(2)消除CPU页面故障,提出了分层IO。通过文件IO接口而不是内存load/store接口访问SSD扩展的虚拟内存。当数据缓存在物理内存中时,通过缓冲IO读/写SSD扩展的虚拟内存,否则通过直接IO绕过页面缓存。(3)由于直接I/O导致服务器上的数据放置不变,难以适应热点。设计了一种动态热点提升机制,依赖于客户端和服务器的协作。

文件碎片

We Ain’t Afraid of No File Fragmentation: Causes and Prevention of Its Performance Impact on Modern Flash SSDs

FAST 2024 Paper 泛读笔记

针对SSD上的文件碎片进行分析,碎片导致读写性能下降的原因是die碰撞。SSD的固件根据闪存die的写入顺序,以循环方式在闪存die上分配其闪存页。在发生文件碎片时,存储连续文件块的页面不能放置在连续die上,而是分配给任意die,导致性能下降。本文提出了NVMe协议的扩展,结合写入命令为页到die的映射提供提示。通过提示,用于追加写入的页面将映射到上一个文件块的页面所分配到的die之后的die。此外,用于对现有文件块进行重写操作的页面也会破坏页面到die的映射模式,该页面将被映射到原始页面所在的同一die。

数据传输

Zero-Change Object Transmission for Distributed Big Data Analytics

ATC 2022 Paper 泛读笔记

针对JVM虚拟机间数据传输的对象序列化和反序列化(OSD)开销。本文提出零变化对象传输(ZCOT),包括三个创新点:(1)引入名为交换空间的全局共享抽象。采用了分布式类数据共享(DCDS)机制,使交换空间中的对象对所有JVM都是可解释的。(2)引入元数据服务器,用于存储对象的位置,并在JVM之间建立数据传输通道。支持基于组的对象管理,减少元数据服务器和JVM之间的流量。与单个JVM中触发的垃圾回收(GC)集成,并减少了GC暂停时间。(3)提出了重复数据消除机制,利用交换空间抽象来存储已发送对象,并避免不必要的对象传输。扩展了分布式内存管理模块,以考虑组间依赖关系,避免重复数据消除在不同的数据集之间引入依赖关系。

Cornflakes: Zero-Copy Serialization for Microsecond-Scale Networking

SOSP 2023 Paper 泛读笔记

针对数据序列化传输,如何为微秒级应用程序设计更高性能的序列化库。需要同时实现:类似API、内存安全、内存透明、低延迟。本文提出了Cornflakes,混合序列化库堆栈,灵活选择分散聚集或内存副本进行序列化。(1)对现代Mellanox NIC进行的实验发现,分散聚集I/O可以提高512字节以上的缓冲区序列化性能。(2)提供了一个透明的混合序列化API,它保证了对零拷贝I/O使用无需保护,同时确保了拷贝和零拷贝的有效执行。(3)当字段至少有512字节时,在DMA安全内存中透明的使用零拷贝,其他使用复制。

SSD

ZNSwap: un-Block your Swap

ATC 2022 Paper 泛读笔记

针对ZNS SSD上的交换子系统设计,现有方法垃圾回收开销高、性能差。本文提出ZNSwap,引入了与交换逻辑共同设计的主机端ZNGC。(1)将每个4K块的反向映射信息、与交换出的页面内容一起写入的逻辑块元数据中,避免了反向映射开销。(2)细粒度空间管理。利用了对操作系统内部页面有效性结构的直接访问,没有与TRIM相关的昂贵开销。(3)动态ZNGC优化。动态调整存储在交换设备中的交换页面数量,提高了以读为主和混合读写工作负载的性能。(4)灵活的数据放置和空间回收策略。允许定制磁盘空间管理策略,以根据特定系统的交换需求定制GC逻辑。(5)准确的多租户计算。ZNSwap与cgroup机制集成,将GC开销显式地归因于不同的租户,从而提高了它们之间的性能隔离。

内存管理

NVAlloc: Rethinking Heap Metadata Management in Persistent Memory Allocators

ATC 2022 Paper 泛读笔记

针对持久内存上的内存分配/回收,现有方法有三个问题:对堆元数据的小写入导致缓存行刷新;分配器的堆元数据倾向于在持久内存中随机访问;静态slab分离导致持久内存碎片。本文提出NVAlloc,提出三个创新点:(1)使用从数据块到其相应堆元数据的交错内存映射,以及线程本地缓存中链表的交错布局,以避免重复访问同一CPU缓存行。(2)添加了一个持久记账日志,以顺序模式存储小的元数据更新,从malloc()和free()的关键路径中完全删除了随机元数据访问。(3)支持slab变形,两个尺寸类中的块可以共同位于一个slab中,利用低内存使用率的slab中的可用空间。

近数据处理

ABNDP: Co-optimizing Data Access and Load Balance in Near-Data Processing

ASPLOS 2023 Paper 泛读笔记

针对使用3D堆叠存储器的近数据处理(NDP)问题,现有方法难以同时实现最小化远程数据访问和计算负载平衡。本文提出ABNDP,利用软硬件协同优化来同时缓解这两个问题。(1)在硬件方面,使用了分布式DRAM缓存,在每个处理单元缓存远程存储器的数据。对处理单元分组(camp),每组缓存一份数据,缓存数据由附近的多个处理单元共享。进一步对不同的camp位置使用倾斜映射,减少缓存冲突。(2)在软件方面,采用混合任务调度策略,同时考虑远程访问成本和负载不平衡影响。可以调度到camp缓存附近,更好地分散热数据上的繁重计算,并减少任务中的总远程访问距离。

局限性:同一份数据缓存在多个DRAM,缓存一致性的开销应该较高,适用于数据修改较少的负载。

HPC存储系统

Taming Metadata-intensive HPC Jobs Through Dynamic, Application-agnostic QoS Control

CCGrid 2023 Paper 泛读笔记

针对HPC存储系统中数据和元数据工作流的QoS控制。本文提出PADLL,作为存储中间件,采用了软件定义存储的思想,构建数据平面和控制平面。(1)数据平面:在计算节点启动的多阶段组件,在应用程序和共享文件系统之间调节I/O请求,拦截POSIX调用并动态地限制指向PFS的调用。(2)控制平面:充当具有全系统可见性的全局协调器,根据工作负载和系统变化在作业之间动态分配存储资源(即元数据速率、I/O带宽),确保始终满足QoS。(3)PADLL允许系统管理员通过控制算法指定QoS策略。

加密

Boomerang: Metadata-Private Messaging under Hardware Trust

NSDI 2023 Paper 泛读笔记

针对端到端加密(E2EE)消息传递系统,如何保护通信元数据,例如通信人和通信时间。本文提出Boomerang,利用了对安全飞地的信任假设,提出消息混洗、工作负载分配、针对水平扩展和主动攻击的遗忘算法。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_36159989/article/details/135749568

智能推荐

攻防世界_难度8_happy_puzzle_攻防世界困难模式攻略图文-程序员宅基地

文章浏览阅读645次。这个肯定是末尾的IDAT了,因为IDAT必须要满了才会开始一下个IDAT,这个明显就是末尾的IDAT了。,对应下面的create_head()代码。,对应下面的create_tail()代码。不要考虑爆破,我已经试了一下,太多情况了。题目来源:UNCTF。_攻防世界困难模式攻略图文

达梦数据库的导出(备份)、导入_达梦数据库导入导出-程序员宅基地

文章浏览阅读2.9k次,点赞3次,收藏10次。偶尔会用到,记录、分享。1. 数据库导出1.1 切换到dmdba用户su - dmdba1.2 进入达梦数据库安装路径的bin目录,执行导库操作  导出语句:./dexp cwy_init/[email protected]:5236 file=cwy_init.dmp log=cwy_init_exp.log 注释:   cwy_init/init_123..._达梦数据库导入导出

js引入kindeditor富文本编辑器的使用_kindeditor.js-程序员宅基地

文章浏览阅读1.9k次。1. 在官网上下载KindEditor文件,可以删掉不需要要到的jsp,asp,asp.net和php文件夹。接着把文件夹放到项目文件目录下。2. 修改html文件,在页面引入js文件:<script type="text/javascript" src="./kindeditor/kindeditor-all.js"></script><script type="text/javascript" src="./kindeditor/lang/zh-CN.js"_kindeditor.js

STM32学习过程记录11——基于STM32G431CBU6硬件SPI+DMA的高效WS2812B控制方法-程序员宅基地

文章浏览阅读2.3k次,点赞6次,收藏14次。SPI的详情简介不必赘述。假设我们通过SPI发送0xAA,我们的数据线就会变为10101010,通过修改不同的内容,即可修改SPI中0和1的持续时间。比如0xF0即为前半周期为高电平,后半周期为低电平的状态。在SPI的通信模式中,CPHA配置会影响该实验,下图展示了不同采样位置的SPI时序图[1]。CPOL = 0,CPHA = 1:CLK空闲状态 = 低电平,数据在下降沿采样,并在上升沿移出CPOL = 0,CPHA = 0:CLK空闲状态 = 低电平,数据在上升沿采样,并在下降沿移出。_stm32g431cbu6

计算机网络-数据链路层_接收方收到链路层数据后,使用crc检验后,余数为0,说明链路层的传输时可靠传输-程序员宅基地

文章浏览阅读1.2k次,点赞2次,收藏8次。数据链路层习题自测问题1.数据链路(即逻辑链路)与链路(即物理链路)有何区别?“电路接通了”与”数据链路接通了”的区别何在?2.数据链路层中的链路控制包括哪些功能?试讨论数据链路层做成可靠的链路层有哪些优点和缺点。3.网络适配器的作用是什么?网络适配器工作在哪一层?4.数据链路层的三个基本问题(帧定界、透明传输和差错检测)为什么都必须加以解决?5.如果在数据链路层不进行帧定界,会发生什么问题?6.PPP协议的主要特点是什么?为什么PPP不使用帧的编号?PPP适用于什么情况?为什么PPP协议不_接收方收到链路层数据后,使用crc检验后,余数为0,说明链路层的传输时可靠传输

软件测试工程师移民加拿大_无证移民,未受过软件工程师的教育(第1部分)-程序员宅基地

文章浏览阅读587次。软件测试工程师移民加拿大 无证移民,未受过软件工程师的教育(第1部分) (Undocumented Immigrant With No Education to Software Engineer(Part 1))Before I start, I want you to please bear with me on the way I write, I have very little gen...

随便推点

Thinkpad X250 secure boot failed 启动失败问题解决_安装完系统提示secureboot failure-程序员宅基地

文章浏览阅读304次。Thinkpad X250笔记本电脑,装的是FreeBSD,进入BIOS修改虚拟化配置(其后可能是误设置了安全开机),保存退出后系统无法启动,显示:secure boot failed ,把自己惊出一身冷汗,因为这台笔记本刚好还没开始做备份.....根据错误提示,到bios里面去找相关配置,在Security里面找到了Secure Boot选项,发现果然被设置为Enabled,将其修改为Disabled ,再开机,终于正常启动了。_安装完系统提示secureboot failure

C++如何做字符串分割(5种方法)_c++ 字符串分割-程序员宅基地

文章浏览阅读10w+次,点赞93次,收藏352次。1、用strtok函数进行字符串分割原型: char *strtok(char *str, const char *delim);功能:分解字符串为一组字符串。参数说明:str为要分解的字符串,delim为分隔符字符串。返回值:从str开头开始的一个个被分割的串。当没有被分割的串时则返回NULL。其它:strtok函数线程不安全,可以使用strtok_r替代。示例://借助strtok实现split#include <string.h>#include <stdio.h&_c++ 字符串分割

2013第四届蓝桥杯 C/C++本科A组 真题答案解析_2013年第四届c a组蓝桥杯省赛真题解答-程序员宅基地

文章浏览阅读2.3k次。1 .高斯日记 大数学家高斯有个好习惯:无论如何都要记日记。他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢?高斯出生于:1777年4月30日。在高斯发现的一个重要定理的日记_2013年第四届c a组蓝桥杯省赛真题解答

基于供需算法优化的核极限学习机(KELM)分类算法-程序员宅基地

文章浏览阅读851次,点赞17次,收藏22次。摘要:本文利用供需算法对核极限学习机(KELM)进行优化,并用于分类。

metasploitable2渗透测试_metasploitable2怎么进入-程序员宅基地

文章浏览阅读1.1k次。一、系统弱密码登录1、在kali上执行命令行telnet 192.168.26.1292、Login和password都输入msfadmin3、登录成功,进入系统4、测试如下:二、MySQL弱密码登录:1、在kali上执行mysql –h 192.168.26.129 –u root2、登录成功,进入MySQL系统3、测试效果:三、PostgreSQL弱密码登录1、在Kali上执行psql -h 192.168.26.129 –U post..._metasploitable2怎么进入

Python学习之路:从入门到精通的指南_python人工智能开发从入门到精通pdf-程序员宅基地

文章浏览阅读257次。本文将为初学者提供Python学习的详细指南,从Python的历史、基础语法和数据类型到面向对象编程、模块和库的使用。通过本文,您将能够掌握Python编程的核心概念,为今后的编程学习和实践打下坚实基础。_python人工智能开发从入门到精通pdf

推荐文章

热门文章

相关标签