实例状态
每个实例在任意时刻都恰好处于八种状态中的一种。实例页面上的状态标签、实例详情页上的状态标签,以及 API 返回的 status 字段,报告的都是同一个值。
各个状态
| 状态 | 是否过渡状态 | 含义 | 计费内容 | 可执行的操作 |
|---|---|---|---|---|
creating | 是 | 你的部署已被接受,Superheat 正在置备切片并拉取镜像 | 不计费 | 等待,或者销毁 |
starting | 是 | 一个已停止的实例正在同一台机器上、用同一块磁盘重新启动 | 不计费 | 等待,或者销毁 |
running | 否 | 工作负载已就绪,连接信息已发布 | GPU:按报价的整片小时价,按秒计量 | 通过 SSH 连接、打开 JupyterLab、查看日志、停止、销毁 |
stopping | 是 | 工作负载正在关闭;磁盘予以保留 | 不计费 | 等待 |
stopped | 否 | 工作负载已关闭;你的磁盘和你在该机器上的名额仍为你保留 | 磁盘:你的磁盘容量乘以每 GB 每小时的存储费率 | 启动、销毁 |
destroying | 是 | 销毁流程进行中,切片正在被释放 | 不计费 | 等待 |
destroyed | 否 | 终态。磁盘已删除,报价已回到市场 | 不计费 | 无。已销毁的实例不会出现在列表中,除非你主动请求查看 |
error | 否 | 置备或某次状态转换失败 | 不计费 | 查看日志、销毁 |
error 不产生费用,但它是一个已放置的状态:在实例被销毁之前,那些 GPU 一直为你的实例预留着,也不会回到这份报价的 available_units 里。销毁它,把它们释放回市场。
过渡状态
有四种状态——creating、starting、stopping 和 destroying——属于过渡状态:Superheat 正在完成这次变更,没有任何计量在跑,你做什么都无法让它更快 —— 不过处于 creating 或 starting 的实例可以直接销毁,而不必干等。控制台会为这些状态绘制一个闪烁的状态标签,并在你有任一实例处于其中时每 3 秒轮询一次,等一切稳定下来后再退回到每 15 秒一次。
实例处于 creating 期间,控制台会显示提示 正在置备你的机器——通常不到 20 秒。拉取大镜像会比这久,而拉取所花的时间一分钱都不收。
哪些转换是合法的
| 从 | 可以转到 |
|---|---|
creating | running、error、destroying |
starting | running、error、destroying |
running | stopping、destroying |
stopping | stopped |
stopped | starting、destroying |
destroying | destroyed |
destroyed | 无——该状态是终态 |
error | destroying |
正常路径是 creating → running → stopping → stopped → starting → running。销毁流程始终是 destroying → destroyed。
destroying 可以从 creating 和 starting 到达,这是刻意的。一次永远落不了地的部署 —— 因为机群里没有匹配的机器而一直在等待放置,或者主机已经不认得这个作业了 —— 否则就会变成一个你永远删不掉的实例:销毁调用会被拒绝,没有任何东西会推动它前进,而这个切片会一直挂在你的组织名下、那块 GPU 也卖不出去。你可以销毁一个还在启动中的实例。
stopping 是例外:它只能转到 stopped。让关闭流程走完,再销毁。
任何要求执行本表之外转换的请求都会被拒绝,返回 409 INVALID_STATE,实例保持原样。