<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>StorageRuntime on Hellokitty&#39;s Blog</title>
    <link>https://yangyang233333.github.io/tags/storageruntime/</link>
    <description>Recent content in StorageRuntime on Hellokitty&#39;s Blog</description>
    <generator>Hugo</generator>
    <language>zh-CN</language>
    <lastBuildDate>Thu, 03 Sep 2026 17:35:00 +0800</lastBuildDate>
    <atom:link href="https://yangyang233333.github.io/tags/storageruntime/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Tutti 源码阅读（一）：StorageRuntime 如何组织 KV Cache I/O</title>
      <link>https://yangyang233333.github.io/posts/tutti-runtime-source-reading/</link>
      <pubDate>Thu, 03 Sep 2026 17:35:00 +0800</pubDate>
      <guid>https://yangyang233333.github.io/posts/tutti-runtime-source-reading/</guid>
      <description>&lt;p&gt;Tutti 的论文强调 GPU 主导 I/O，但应用首先接触的不是 NVMe doorbell，而是一套稳定的 &lt;code&gt;StorageRuntime&lt;/code&gt; API。它负责把 URI、文件 extent、GPU 内存、后端实例和异步请求组装起来，让上层无需知道底层究竟是单盘、条带化 NVMe，还是未来的其他传输路径。&lt;/p&gt;
&lt;p&gt;本文阅读 Tutti v0.1.1 的运行时源码与设计文档，聚焦五个问题：公开 API 长什么样、&lt;code&gt;open&lt;/code&gt; 如何解析对象、&lt;code&gt;register_memory&lt;/code&gt; 为什么独立存在、&lt;code&gt;submit/wait&lt;/code&gt; 如何路由，以及 vLLM connector 如何接入。&lt;/p&gt;
&lt;p&gt;项目源码：&lt;a href=&#34;https://github.com/xPU-IO/Tutti&#34;&gt;xPU-IO/Tutti&lt;/a&gt;。&lt;/p&gt;
&lt;h2 id=&#34;一先看整体分层&#34;&gt;一、先看整体分层&lt;/h2&gt;
&lt;p&gt;当前代码把系统拆成以下层次：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Application / vLLM Connector
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             │
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             ▼
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      StorageRuntime
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; open · register · submit · wait
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             │
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      ┌──────┴──────┐
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      ▼             ▼
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   Resolver       DataPath
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; URI → target     IO → backend
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      │             │
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      └──── Binding ┘
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             │
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      local / striped NVMe
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;StorageRuntime&lt;/code&gt; 是唯一稳定的应用接口；Resolver、Binding 和 DataPath 是内部 SPI。这样做避免上层依赖特定 NVMe 驱动或 GPU 厂商实现。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
