裸盘 io
1 | sync && echo 3 | sudo tee /proc/sys/vm/drop_caches |
结果
读速率 | 写速率 | |
---|---|---|
1 | 1.7 GB/s | 1.5 GB/s |
2 | 1.7 GB/s | 1.5 GB/s |
3 | 1.7 GB/s | 1.5 GB/s |
4 | 1.7 GB/s | 1.5 GB/s |
5 | 1.7 GB/s | 1.5 GB/s |
avg | 1.7 GB/s | 1.5GB/s |
1 | sync && echo 3 | sudo tee /proc/sys/vm/drop_caches |
结果
读速率 | 写速率 | |
---|---|---|
1 | 1.7 GB/s | 1.5 GB/s |
2 | 1.7 GB/s | 1.5 GB/s |
3 | 1.7 GB/s | 1.5 GB/s |
4 | 1.7 GB/s | 1.5 GB/s |
5 | 1.7 GB/s | 1.5 GB/s |
avg | 1.7 GB/s | 1.5GB/s |
spdk是一个框架,而不是一个分布式系统,spdk的基石(官网用了bedrock 这个词)是用户态(user space
)、轮询(polled-mode
)、异步(asynchronous
)、无锁(lockless
)的NVMe驱动,其提供了零拷贝、高并发直接从用户态访问ssd的特性。其最初的目的是为了优化块存储落盘。但随着spdk的持续演进,大家发现spdk可以优化存储软件栈的各个方面。用户态、轮询、无锁和异步的技术来提高存储软件栈的效率。
存储性能开发工具包 (SPDK) 提供了一组工具和库,用于编写高性能、可扩展的用户模式存储应用程序。它通过使用许多关键技术来实现高性能:
接下来细细理解这三个东西,然后在去了解延申的一些知识。
FEMU是弗吉尼亚理工学院的Huaicheng LI教授团队开发的一款SSD模拟器。基于QEMU,所以模拟出来的SSD设备可以被qemu使用。FEMU可用于模拟多种SSD,个人研究更关注ZNS SSD ,所以找到了相关部分的代码。
代码路径:FEMU/hw/femu/zns
该路径中有两个文件:
两个栈可以实现队列,一个队列就可实现一个栈。
两个栈实现队列的时候,只有在出队列时 ,如果 “出栈”栈为空,需要有 入栈栈到出栈栈的转移操作。
一个队列实现栈时,每次入栈都需要将队列进行“翻转”(重新全部入队列,最终将队尾移动到对头)。
遇到对时间复杂度有要求的就空间换时间。
INT_MAX 可用来表示正无穷,INT_MIN表示负无穷。
倒序一个链表,优先想到栈(先入后出!)
判断链表有无环,快慢双指针。 画图能够迅速帮你找到解决思路!!!!杨老师!谢谢你 画图列方程
由于链表经常要用前一个值操作后一个值,所以经常要考虑边界值。
对于深度克隆,比如随机链表复制,无向图复制,要想到哈希表。