cgroup--blkio子系统测试-1(throttle测试)

【访问控制】cgroup限制磁盘读写 blkio是cgroup中的一个子系统,可以用于限制及监控磁盘读写io blkio控制子系统可以限制进程读写的 IOPS 和吞吐量,但它只能对 Direct I/O 的文件读写进行限速,对 Buffered I/O 的文件读写无法限制 Buffered I/O 指会经过 PageCache 然后再写入到存储设备中。这里面的 Buffered 的含义跟内存中 buffer cache 不同,这里的 Buffered 含义相当于内存中的buffer cache+page cache。 阅读详情

1  限制块设备读速率:

首先内核配置必须要满足如下要求:

- Enable Block IO controller
        CONFIG_BLK_CGROUP=y

- Enable throttling in block layer
        CONFIG_BLK_DEV_THROTTLING=y

这个可以从/boot 目录下的 config-xxx 文件确定。


挂载 blkio 子系统:

mount -t tmpfs cgroup_root /sys/fs/cgroup
mkdir /sys/fs/cgroup/blkio
mount -t cgroup -o blkio none /sys/fs/cgroup/blkio

sync                                                                          /// 因为测试的是 buffered IO 所以这写些骤很重要。

echo 3 > /proc/sys/vm/drop_caches


限制一个设备的读速率,在这里限制的是U盘的速率:(其中sdb  对应 8:16 ,sda 对应着 8:0 )

sina@ubuntu:~$ df
文件系统           1K-块      已用      可用 已用% 挂载点
/dev/loop0            29979608  21393392   7063324  76% /
udev                    966128         4    966124   1% /dev
tmpfs                   389260       900    388360   1% /run
none                      5120         0      5120   0% /run/lock
none                    973144       340    972804   1% /run/shm
/dev/sda6            130095100  32334964  97760136  25% /host
cgroups                 973144         0    973144   0% /sys/fs/cgroup
cgroup_root             973144         0    973144   0% /sys/fs/cgroup
/dev/sdb               7808092   6260552   1547540  81% /media/KINGSTON
echo "8:16  1048576" > /sys/fs/cgroup/blkio/blkio.throttle.read_bps_device

以上限制U盘的读速率是  1.0 MB/s  。

用 disk文件测试:

root@ubuntu:~/work/test# dd if=/media/KINGSTON/disk.img of=/dev/null bs=1M count=512
记录了512+0 的读入
记录了512+0 的写出
536870912字节(537 MB)已复制,511.81 秒,1.0 MB/秒


同样也可以通过设置 blkio.throttle.write_bps_device  限制 U 盘的写速率为0.5M/s:(此时U盘挂载为sdd)

root@ubuntu:/sys/fs/cgroup/blkio# echo "8:48  524288" > /sys/fs/cgroup/blkio/blkio.throttle.write_bps_device
root@ubuntu:/sys/fs/cgroup/blkio# dd if=/dev/zero of=/media/KINGSTON/diskt.img bs=1M count=512
记录了512+0 的读入
记录了512+0 的写出
536870912字节(537 MB)已复制,913.309 秒,588 kB/秒
iostat 结果如下:
sina@ubuntu:~$ iostat -xm  sdd 10
Linux 3.0.0-26-generic-pae (ubuntu) 	2012年09月21日 	_i686_	(4 CPU)


Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sdd               0.00     0.00    0.00    4.40     0.00     0.51   235.27     0.05   11.45    0.00   11.45  11.18   4.92

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.67    0.00    0.52   24.94    0.00   73.86

Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sdd               0.00     1.30    0.60    5.00     0.00     0.50   183.29     0.18   31.93    0.67   35.68  24.00  13.44

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.68    0.00    0.38   24.83    0.00   74.12

Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sdd               0.00     6.20    1.60    4.60     0.00     0.49   163.26     0.17   26.77    0.75   35.83  20.19  12.52

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           4.41    0.00    1.15   24.79    0.00   69.65



通过写 blkio.throttle.read_iops_device 来限制  U盘的每秒IO 次数:
echo "<major>:<minor>  <rate_io_per_second>" > /cgrp/blkio.throttle.read_iops_device

当用dd 测试 字符速率的时候(1M/s) 用命令 (  iostat     -xm  sdb 10 ) 来测试 IO 速率。

sina@ubuntu:~$ iostat -xm sdb 10
Linux 3.0.0-26-generic-pae (ubuntu) 	2012年09月20日 	_i686_	(4 CPU)


avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           2.85    0.00    0.63   24.59    0.00   71.93

Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sdb               0.00     0.00   18.00    0.00     1.00     0.00   113.89     0.07    4.00    4.00    0.00   1.78   3.20

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           4.07    0.00    0.90   24.16    0.00   70.86

Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sdb               0.00     0.00   18.00    0.00     1.00     0.00   113.89     0.07    3.64    3.64    0.00   1.78   3.20

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           3.85    0.00    0.95   24.64    0.00   70.55

Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sdb               0.00     0.00   18.00    0.00     1.00     0.00   113.89     0.07    4.00    4.00    0.00   1.78   3.20

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           2.00    0.00    0.70   25.05    0.00   72.25

Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sdb               0.00     0.00   18.00    0.00     1.00     0.00   113.89     0.07    3.78    3.78    0.00   1.78   3.20

按照上面的读测试显示此时每秒的读 IO 次数 大概在 18次左右。

也可以计算出这个dd命令的IO速度:

root@ubuntu:~/TestDir# time dd if=/media/KINGSTON/busybox.img of=/dev/null bs=1M count=512
记录了512+0 的读入
记录了512+0 的写出
536870912字节(537 MB)已复制,500.458 秒,1.1 MB/秒

real	8m20.463s
user	0m0.000s
sys	0m0.828s
512  /  (8 * 60 + 20.463) = 1 M/s


测试 将U盘每秒的IO速率限制为10. 

# echo "8:16  10" > /sys/fs/cgroup/blkio/blkio.throttle.read_iops_device 

此时再测试U盘的读速度:

root@ubuntu:~/TestDir# dd if=/media/KINGSTON/disk.img of=/dev/null bs=1M count=512

记录了512+0 的读入
记录了512+0 的写出
536870912字节(537 MB)已复制,914.64 秒,573 kB/秒
在这个过程中:
sina@ubuntu:~$ iostat -xm sdb 10
Linux 3.0.0-26-generic-pae (ubuntu) 	2012年09月20日 	_i686_	(4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           7.88    0.00    1.77   22.80    0.00   67.55

Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sdb               0.20     0.00    9.80    0.00     0.54     0.00   113.01     0.03    2.61    2.61    0.00   1.71   1.68

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           3.32    0.00    1.82   23.50    0.00   71.35

Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sdb               0.00     0.00   10.10    0.00     0.57     0.00   115.99     0.03    2.73    2.73    0.00   1.82   1.84

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           4.63    0.00    1.48   24.29    0.00   69.60

Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sdb               0.00     0.00   10.00    0.00     0.55     0.00   112.91     0.03    2.64    2.64    0.00   1.76   1.76

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           4.01    0.00    0.88   24.47    0.00   70.64

Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sdb               0.10     0.00    9.80    0.10     0.55     0.00   113.74     0.02    2.51    2.53    0.00   1.74   1.72

可见当 read_iops_device 和 read_bps_device 同时设置的时候,那么会同时起限制的作用。




用blkio 限制指定进程的 读速度:


创建脚本 blk.sh

root@ubuntu:~/work/test# cat blk.sh 
dd if=/media/KINGSTON/diskt.img of=/dev/null bs=1M count=512 &
echo $! > /sys/fs/cgroup/blkio/test1/tasks

在 cgroup 的 blkio 目录中创建一个目录 test1:

root@ubuntu:/sys/fs/cgroup/blkio# mkdir test1/
限制 test1 的读速率:
root@ubuntu:/sys/fs/cgroup/blkio# echo "8:48  524288" > /sys/fs/cgroup/blkio/test1/blkio.throttle.read_bps_device

开启一个dd ,将其PID attach 到 test1 的tasks 文件中。
root@ubuntu:~/work/test# ./blk.sh

用 iostat 测试其读速率:
sina@ubuntu:~$ iostat -xm sdb 10
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           7.36    0.00    1.43   24.91    0.00   66.30

Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sdd               0.00     0.00    9.00    0.00     0.50     0.00   113.89     0.03    2.98    2.98    0.00   1.69   1.52

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           4.27    0.00    2.39   23.57    0.00   69.77

Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sdd               0.10     0.00    8.20    0.00     0.50     0.00   124.90     0.03    3.95    3.95    0.00   1.95   1.60

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           5.73    0.00    3.09   23.64    0.00   67.54

Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sdd               0.00     0.00    9.00    0.00     0.50     0.00   113.89     0.04    4.00    4.00    0.00   1.78   1.60
root@ubuntu:~/work/test# ./blk.sh 
root@ubuntu:~/work/test# 记录了512+0 的读入
记录了512+0 的写出
536870912字节(537 MB)已复制,1029.69 秒,521 kB/秒
可见其读速率 符合预先的设置。

同样的开启一个dd 在没有attack PID 的时候其读速率将不会受控:

root@ubuntu:~/work/test# dd if=/media/KINGSTON/diskt.img of=/dev/null bs=1M count=512
记录了512+0 的读入
记录了512+0 的写出
536870912字节(537 MB)已复制,12.4191 秒,43.2 MB/秒








fio配合cgroup测试存储设备IOPS分配 
http://blog.yufeng.info/archives/2001 
 
 
CGroup限制系统资源how to<命令行>
http://www.mysqlsky.com/201203/cgroup-os-how-to






cgroup-blkio子系统分析 1      概述Cgroup中的blkio子系统的主要功能是实现对磁盘i/o带宽的可定制化控制。目前支持的控制策略只要有两种:BLKIO_POLICY_PROP和BLKIO_POLICY_THROTL,即基于权重方式和基于流量方式。权重方式依赖于内核原生的CFQ i/o调度算法,i/o调度算法本身是工作在i/o调度层的,因此在使用上有一定的局限性,即被控制的设备必须使用cfq调度算法;为了弥补这... 阅读详情

相关推荐

linux中cgroup的简单使用

Linux CGroup全称Linux Control Group, 是Linux内核的一个功能,用来限制,控制与分离一个进程组群的资源(如CPU、内存、磁盘输入输出等)。这个项目最早是由Google的工程师在2006年发起(主要是Paul Menage和Rohit Seth),最早的名称为进程容器(process containers)。在2007年时,因为在Linux内核中,容器(container)这个名词太过广泛,为避免混乱,被重命名为cgroup,并且被合并到2.6.24版的内核中去。

Java+GO+JS全栈工程师-鹤冲天的博客:编程辅导~商务合作~技术交流 4349

linux qos 实现机制,linux的qos机制 - cgroup篇 (4)

下面来看各个子系统对cgroup的支持,第一篇先研究blkio子系统blkio子系统支持三种类型的QoS控制:blkio.weight, blkio.weight_device:这些是基于设备权重值的控制方式blkio.throttle.read_bps_device,blkio.throttle.write_bps_device:这些是基于带宽的控制方式blkio.throttle.read_i...

weixin_29571873的博客 587

【AUTOSAR】MCU Port的配置(MCAL)【EB】

熟悉Classic AUTOSAR架构的朋友应该知道,经常需要用到MCU中的Port这个模块。那么如何通过工具快速配置一个Port呢?

xinsuiwodong2014的博客 9512

blk-throttle: async write throttling

Overview      目前 blkio.throttle 控制器只支持同步IO请求。这意味着我们总是查看当前的任务“所有者”来识别每个IO请求。     然而在页面缓存的脏页面可以被内核线程per-bdi flusher 或者系统内的其它的线程根据回写策略异步的写回磁盘。      因为这个原因,真正写入到底层块设备  可能 发生在一个不同的IO上下文,考虑到进程最初生成的脏页参

gudujianjsk的专栏 1411

STM32移植u8g2库(HAL库)(硬件SPI)(sh1106_128x64)

STM32移植u8g2库(HAL库)(硬件SPI)(sh1106_128x64) MCU型号为STM32F103RCT6,OLED屏为中景园电子1.3寸屏,驱动芯片为sh1106,分辨率为128x64,MDK版本为V5.34。

Master_0_的博客 6271

【详细】芯片设计全流程(包括每个流程需要用到的工具以及需要参与的工作人员)

一颗芯片的诞生经历了设计、制造和测试(分别对应集成电路产业链的设计业、制造业和封测业),而每一步都包含了复杂的步骤和流程。 图0-1 集成电路产业链 现在,我们重点介绍芯片设计的全流程以及每个流程需要用到的设计工具和需要参与的工作人员。 一、IC设计分类 首先对IC设计的分类做个介绍,如图1-1所示。 图1-1 IC设计分类 如图1-1所示,IC设计可以粗分为数字IC设计和射频/模拟IC设计,数字IC设计又可分为ASIC设计和FPGA/CPLD设计,此外还有一部分IC设计.

qq_36045093的博客 8万+

linux块设备5

linux 3.1.5 blk-merge.c blk_recalc_rq_segments/__blk_recalc_rq_segments: 计算request中的segments数。高page的算, 被blk_core调用 blk_recount_segments: 仅统计这个bio的segments, 不包含next的, 被driver/fs/其他merge函数调用

brucexu1978的专栏 1945

别再搞混了!MATLAB通信仿真中EbN0转SNR的保姆级公式推导与避坑指南

本文深入解析MATLAB通信仿真中EbN0与SNR转换的核心公式,揭示数字仿真与理论系统的关键差异。通过真实案例展示错误参数设置导致的隐蔽问题,并提供完整的参数自查清单和正确实现代码,帮助工程师和学生避免常见错误,确保仿真结果准确可靠。

weixin_28746223的博客 348

01. 要知Docker所以然

1. 容器技术概述 在容器出现之前,通过 chroot 技术把用户的文件系统根目录切换到某个指定的目录下,从而实现简单的文件系统视图上的抽象或虚拟化,但并没有提供本质上的隔离技术,用户可以逃离设定的根目录而进入到host主机上的目录,缺乏安全性。 容器技术又称为容器虚拟化,是一种操作系统虚拟化,是属于轻量级的虚拟化技术。容器技术主要包括 Namespace和Cgroup 这两个内核特性: 1、Namespace:命名空间,主要做访问隔离。其原理是针对这类资源(如网络、进程ID等)进行抽象,并将其封装在一起提

weixin_45898396的博客 346

高效数据迁移:ICCAP到ADS的数据导入与导出实战指南

本文提供了从ICCAP到ADS进行高效、准确数据迁移的实战指南。针对射频与微波电路设计中的关键挑战,详细阐述了迁移前的战略规划、ICCAP数据的精细化导出(包括脚本化批处理)、ADS数据的多种导入方法(如Data Items、DML模型库及编程化API),并强调了数据完整性与准确性验证的重要性,确保模型参数和仿真结果在平台间可靠传递。

weixin_29291185的博客 131

DELL SC存储扩容避坑指南:6Gb vs 12Gb扩展柜混插的真相

本文深入解析DELL SC存储扩容中6Gb与12Gb扩展柜混插的核心规则与性能影响。文章指出,从SCOS 7.3版本起允许混插,但整个SAS环路速率将降至最低设备水平,尤其在12Gb控制器上接入6Gb扩展柜会严重拖累性能。指南提供了清晰的兼容性矩阵、实战操作流程及关键避坑清单,帮助管理员安全、高效地完成存储扩容。

weixin_28314575的博客 458

linux中回调函数的原理,Linux CGroups v2 IO writeback原理详解

[TOC]## io writeback代码分析本文主要从 writeback 触发开始,对整个writeback 过程进行分析,中间也加入了对 cgroup 如何支持 writeback 限速的分析。通过梳理cgroup writeback的流程,我们可以知道在加入 cgroup 之后, writeback决策 可以分为两个步骤:1. 脏页在 page cache 中,根据多个条件(cgroup...

weixin_36256447的博客 1219

OpenCV C++ 图像处理实战 ——《基于轮廓比对的缺陷检测》

本文使用OpenCV C++ 实现基于轮廓比对的缺陷检测。

Zero___Chen的博客 1147

《Docker进阶与实战》——2.3节Cgroup介绍

本节书摘来自华章社区《Docker进阶与实战》一书中的第2章,第2.3节Cgroup介绍,作者华为Docker实践小组,更多章节内容可以访问云栖社区“华章社区”公众号查看 2.3 Cgroup介绍2.3.1 Cgroup是什么Cgroup是control group的简写,属于Linux内核提供的一个特性,用于限制和隔离一组进程对系统资源的使用,也就是做...

weixin_33921089的博客 232

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Cgroups使用

Cgroups使用 一.                      Cgroups介绍 linux内核提供了cgroups控制组(controlgroups)的功能,最初由google的工程师提出,后来被整合进Linux内核。Cgroups也是LXC(LinuxContainer容器是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复

thundermeng的博客 3106

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

cgroups管理进程磁盘io

linux 的 cgroups 还可以限制和监控进程的磁盘 io。这个功能通过 blkio 子系统实现。 blkio 子系统里东西很多。不过大部分都是只读的状态报告,可写的参数就只有下面这几个: 复制代码代码如下: blkio.throttle.read_bps_device blkio.throttle.read_iops_device blkio.throttle.wri

sofia1217的专栏 2665

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

linux的qos机制 - cgroup篇 (2)

这篇重点讲述cgroup如何控制blkio子系统的qos,首先看下设置 blkio.weight blkio.weight_device 我的理解是blkio.weight是整个io子系统的权重值,而blkio.weight_device是针对特定的 major:minor 设备的权重 blkio.throttle.read_bps_device blkio.throttle.write_bp

majieyue的专栏 3547

Docker磁盘IO隔离难题破解:blkio实战配置与性能验证全流程

解决Docker容器磁盘IO争抢难题,掌握blkio限制IO带宽实战方法。适用于多容器资源隔离场景,通过cgroup精准控制读写速率,提升系统稳定性。配置步骤清晰,效果可验证,值得收藏。

VarLens的博客 1048

关于Linux中控制群组cgroup(资源管理)的一些笔记

不加思考地滥读或无休止地读书,所读过的东西无法刻骨铭心,其大部分终将消失殆尽。——叔本华

山河已无恙 3126

云计算 Python

实验需求: 实验1:建立一个容器,分配给他第一、第二颗CPU使用。(修改配置文件的方式) 实验2:限制硬盘每秒钟读写和写大小不超过100MB(修改配置文件的方式) 实验步骤: 实验1: 有两种方式: 方式1:命令行的方法 创建一个容器:并分配 0代表第一颗,1代表第二颗。如果4颗,就是0-3 验证: 方式2:修改配置文件的方法 创建一个容器 切换目录: 切换这个容器目录: 修改配置文件 查看: 实验2: 有两种方式: 方式...

m0_60655253的博客 423

Linux Block子系统——IO调度层

概述 本文主要来讨论Linux Block子系统中的IO调度层。我们知道应用层发起磁盘数据访问时内核并不会立即将请求下发到磁盘的驱动程序中进行响应,而是做适当的延迟,尝试能否扩展之前请求的磁盘范围来满足该请求。这样做的好处也很明显,以机械硬盘为例,访问不同位置的数据是通过磁头的移动实现的,如果下发给驱动程序的请求是按照磁头移动的方向进行了排序,那么磁盘只需要按照特定的方向连续的访问数据即可响应这...

weixin_30588827的博客 939

Linux服务器磁盘IO性能优化实战:用cgroup blkio限制特定进程的读写速度

本文详细介绍了如何利用Linux的cgroup blkio子系统优化服务器磁盘IO性能,通过限制特定进程的读写速度和IOPS,实现精细化的资源分配。文章包含环境准备、配置步骤、效果验证及生产环境最佳实践,特别适合需要解决磁盘IO争抢问题的运维人员。

g2h3i4j5的博客 189

【Docker笔记】Windows10 下镜像目录修改方法如下

1威威 目前最新版本的Docker是可以在Windows10操作系统中运行的,这是这几年大家都众所周知的,但最近几年所出的新版本的Docker,是可以不借助的Windows10的Hyper-V虚拟机运行的,而是采用借助WSL运行虚拟机。这样一来很好的解决了之前VMWare和Hyper-V冲突或者过度损耗性能的问题。 那么最近笔者在学习过程中,好奇Windows10下的Docker镜像和容器存储在哪个位置了,经过多番查找,最终终于找到了,位置如下: 存放位置:C:\Users\【当前登录用户】\AppDa

一只慵懒滴猫儿の技术博 2916
上一篇: cgroup--blkio子系统测试-2(配合fio 做weight测试)
下一篇: cgroup--cpu spuset 子系统功能测试
xianjian_x
博客等级 码龄14年 231粉丝 43原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值