[Тест хранилища] Инструмент тестирования производительности хранилища vdbench
[Тест хранилища] Инструмент тестирования производительности хранилища vdbench

Всем привет, мы снова встретились, я ваш друг Цюаньчжаньцзюнь.

1. Предисловие

1. Введение

vdbench — генератор рабочей нагрузки ввода-вывода,Обычно используется для проверки целостности данных и измерения производительности хранилища с прямым подключением (или с подключением к сети). Он может работать в средах Windows и Linux.,Доступно длятестфайловая системаили Блокирование производительности тестового устройства。

2. Получите пакет версии

  • пакет версии vdbench Ссылка для скачивания
  • пакет версии jdk Ссылка для скачивания(windows) Ссылка для скачивания(linux)

2. Установка и развертывание

1. Linux-клиент

  • Развертывание среды jdk

 РазархивироватьjdkУстановите пакет на/optОглавление

Язык кода:javascript
копировать
tar -zxvf jdk-8u251-linux-x64.tar.gz -C /opt/

·Настроить переменные среды jdk.

Язык кода:javascript
копировать
echo 'JAVA_HOME=/opt/jdk1.8.0_251' >> /root/.bashrc
echo 'PATH=$JAVA_HOME/bin:$PATH' >> /root/.bashrc
echo 'CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar' >> /root/.bashrc
source /root/.bashrc
  • Настройка без ключа

Необязательно. Если требуется онлайн-тестирование, необходимо настроить этот пункт.

Пример Использование трех клиентов онлайн-теста.,Использовать клиентnode241в качестве главного узла

имя хоста клиента

IP-адрес клиента

node241

66.66.66.241

node242

66.66.66.242

node243

66.66.66.243

 Поместите каждый узелIPСвязь сопоставления с именем хоста записывается в/etc/hostsв файле конфигурации

Язык кода:javascript
копировать
echo '66.66.66.241 node241' >> /etc/hosts
echo '66.66.66.242 node242' >> /etc/hosts
echo '66.66.66.243 node243' >> /etc/hosts

Мастер-узел генерирует файл открытого ключа и копирует его на другие подчиненные узлы (настройте главный узел для входа на подчиненный узел без секретного ключа)

Язык кода:javascript
копировать
ssh-keygen
ssh-copy-id node242
ssh-copy-id node243
  • использование vdbench

 РазархивироватьvdbenchУстановите пакет на/root/vdbench50406Оглавление Внутри,Перейдите в каталог распаковки vdbench и выполните соответствующий файл параметров.

Язык кода:javascript
копировать
unzip vdbench50406.zip -d /root/vdbench50406

2. Клиент Windows

  • Развертывание среды jdk Просто установите программное обеспечение jdk напрямую (переменные среды будут добавлены автоматически после завершения установки)
  • использование vdbench Разархивируйте пакет программного обеспечения vdbench, переключитесь в каталог распаковки vdbench и выполните соответствующий файл параметров.

3. На что следует обратить внимание

  1. Когда онлайн тест,Системное время клиента должно быть постоянным.,В противном случае появятся сигналы синхронизации часов (это может привести к проблемам с пульсом)
  2. Брандмауэр клиента необходимо отключить(или Или задайте указанный порт для открытой программы55705560доступ)
  3. Отключите службу системного журналаrsyslog,Избегайте печати другой информации из файла журнала во время работы. параметрдокументдобавить вmessagescan=noМожет отфильтровывать избыточные системные журналы

3. Общие операции

1. Часто используемые рабочие команды

Проверьте среду vdbench

Язык кода:javascript
копировать
./vdbench -t

Запустите тестовую модель

Примечание. За параметром -f следует имя файла параметров теста, а за параметром -o следует путь для экспорта результатов теста.

Язык кода:javascript
копировать
./vdbench -f {filename} -o {exportpath}

возведена рш связь

Примечание. Эта команда используется при запуске vdbench онлайн на нескольких хостах в системах Windows.,Поскольку операционная система Windows не поддерживает ssh,поэтому,vdbenchпредоставилrshметод связи。Выполните это на целевом хостеинструментназад,vdbenchначнетjava сокет для vdbench Связь между ведомым и ведущим

Язык кода:javascript
копировать
./vdbench rsh

4. Описание параметров

vdbench можно использовать для тестирования производительности файловых систем и блочных устройств. Ниже в основном представлены общие параметры тестирования файловых систем и блочных хранилищ. Все тестовые параметры vdbench определяются в файле параметров. Они последовательно считываются во время выполнения и выполняют соответствующие операции. Последовательность выполнения необходимо определить при определении файла параметров.

1. Файловая система

Порядок определения файлов параметров файловой системы: HD, FSD, FWD, RD.

1.1、HD(Host Define)

Необязательные параметры HD не требуют настройки при запуске на одном компьютере. Обычно настройка требуется только во время онлайн-тестирования на нескольких хостах.

Язык кода:javascript
копировать
hd=default,vdbench=/root/vdbench50406,user=root,shell=ssh
hd=hd1,system=node241
hd=hd2,system=node242
hd=hd3,system=node243
  • hd= Имя, которое идентифицирует определение хоста. Если запущено несколько хостов, вы можете использовать hd1, hd2, hd3..., чтобы различать их.
  • system= IP-адрес хоста или имя хоста
  • vdbench= Путь к хранилищу исполняемого файла vdbench. Если пути к хранилищу на нескольких хостах различны, их можно указать отдельно при определении hd.
  • user= Ведомый и главный общаются с помощью пользователя
  • shell= Необязательные значения:rshsshилиvdbench,Значение по умолчанию:rsh,Когда несколько хостов онлайн,Метод связи между главным и подчиненным хостами Когда значение параметраrshчас,Необходимо настроить взаимное доверие главного и подчиненного хоста rsh.,Учитывая, что rsh использует передачу открытого текста,Недостаточный уровень безопасности,Обычно не рекомендует этот способ связи Когда значение параметраsshчас,Необходимо настроить взаимное доверие ssh главного и подчиненного хоста.,в целомLinuxХост онлайнчасиспользоватьэтот метод связи Когда значение параметраvdbench,требуется вообщеslaveхост работаетvdbench rshдавать возможностьvdbenchсобственныйrshдемон,Обычно этот метод связи используется, когда хост Windows находится в сети.
1.2、FSD(File System Define)
Язык кода:javascript
копировать
fsd=default,openflags=directio,depth=2,width=3,files=2,size=128k
fsd=fsd1,anchor=/mnt/client1
fsd=fsd2,anchor=/mnt/client2
fsd=fsd3,anchor=/mnt/client3
  • fsd= логотипфайловая системаопределенное имя,многофайловая системачас(fsd1fsd2fsd3…),Можно указатьdefault(Передайте те же параметры, что и всеfsdЗначение по умолчанию)
  • openflags= установив наo_directилиdirectio,Операции чтения и записи в небуферизованном кеше
  • anchor= документписать Оглавление,linuxУказанный путь/dir01;windowsУказанный путьE:\dir01
  • depth= Количество создаваемых уровней каталогов (т. е. глубина каталога)
  • width= Количество подпапок в каждом слое папок
  • files= Количество тестовых файлов (в процессе vdbenchtest будет создана многоуровневая структура каталогов. Фактически только последний каталог будет генерировать тестовые файлы)
  • size= Размер каждого тестового файла
  • **distribution= ** Необязательные значения:bottomилиall,По умолчаниюbottom –Когда значение параметраbottomчас,Программа есть только в самомназадслой Оглавлениеписатьтестдокумент –Когда значение параметраallчас,Программа записывает тестовые файлы на каждом уровне каталога.
  • shared= Необязательные значения:yesилиno,Значение по умолчанию:no,Обычно только в Когда несколько хостов онлайнобозначение vdbench не позволяет разным подчиненным устройствам совместно использовать все файлы в одной и той же структуре каталогов, поскольку это приведет к большим накладным расходам, но позволяет использовать одну и ту же структуру каталогов. Если установлен параметрshared=yes, то разные подчиненные устройства могут в равной степени совместно использовать все файлы в каталоге для доступа, что эквивалентно тому, что каждое подчиненное устройство имеет свою собственную одинаково разделенную область доступа, поэтому несколько клиентов не могут читать и записывать один и тот же файл. –когда Когда несколько хостов онлайн,писать的корень Оглавлениеanchorдлятот же самыйпутьчас,нуждатьсяобозначениепараметрценитьдляyes
Язык кода:javascript
копировать
hd=default,vdbench=/root/vdbench50406,user=root,shell=ssh
hd=hd1,system=node1
hd=hd2,system=node2
hd=hd3,system=node3
fsd=fsd1,anchor=/client/,depth=2,width=100,files=100,size=4k,shared=yes

 Формула расчета следующая:  большинствоназадслойгенерироватьдокументпапкачисло=width^depth  тестдокументчисло=(width^depth)*files

Язык кода:javascript
копировать
fsd=fsd1,anchor=/dir1,depth=2,width=3,files=2,size=128k
Если взять приведенные выше параметры в качестве примера, структура каталогов и тестовые файлы генерируются следующим образом:
Количество папок на последнем уровне=3^2=9 Количество файлов в последнем слое=9*2=18
/dir1/
├── no_dismount.txt
├── vdb.1_1.dir
│   ├── vdb.2_1.dir
│   │   ├── vdb_f0001.file
│   │   └── vdb_f0002.file
│   ├── vdb.2_2.dir
│   │   ├── vdb_f0001.file
│   │   └── vdb_f0002.file
│   └── vdb.2_3.dir
│       ├── vdb_f0001.file
│       └── vdb_f0002.file
├── vdb.1_2.dir
│   ├── vdb.2_1.dir
│   │   ├── vdb_f0001.file
│   │   └── vdb_f0002.file
│   ├── vdb.2_2.dir
│   │   ├── vdb_f0001.file
│   │   └── vdb_f0002.file
│   └── vdb.2_3.dir
│       ├── vdb_f0001.file
│       └── vdb_f0002.file
├── vdb.1_3.dir
│   ├── vdb.2_1.dir
│   │   ├── vdb_f0001.file
│   │   └── vdb_f0002.file
│   ├── vdb.2_2.dir
│   │   ├── vdb_f0001.file
│   │   └── vdb_f0002.file
│   └── vdb.2_3.dir
│       ├── vdb_f0001.file
│       └── vdb_f0002.file
└── vdb_control.file

12 directories, 20 files
1.3、FWD(FileSystem Workload Defile)
Язык кода:javascript
копировать
fwd=default,operation=read,xfersize=4k,fileio=sequential,fileselect=random,threads=2
fwd=fwd1,fsd=fsd1,host=hd1
fwd=fwd2,fsd=fsd2,host=hd2
fwd=fwd3,fsd=fsd3,host=hd3
  • fwd= Имя, которое идентифицирует определение рабочей нагрузки файловой системы. При определении нескольких рабочих нагрузок файловой системы вы можете использовать fwd1, fwd2, fwd3..., чтобы различать их.
  • fsd= Определите эту рабочую нагрузку с помощью Хранение Имя определяется файлами
  • host= Определяет хост, используемый этой рабочей нагрузкой.
  • operation= Необязательные значения:readилиwrite,Режим работы с файлами
  • rdpct= Необязательные значения:0~100,Процент операций чтения,Как правило, необходимо указать смешанное чтение и письмо.,Когда значение равно 60,Тогда смешанное соотношение чтения и записи составит 6:4.
  • fileio= Необязательное значение является случайнымилиsequential,логотипдокумент I/O как это будет выполнено
  • fileselect= randomилиsequential,Определяет способ выбора файлов и каталогов
  • xfersizes= Размер данных, обрабатываемых при передаче данных (операции чтения и записи) (т. е. один размер ввода-вывода)
  • threads= Количество одновременных потоков для этой рабочей нагрузки

Примечание: 1. По умолчанию,Рабочая нагрузка предварительно заполненных данных определяется какthreads=8,xfersize=128k,То есть предварительное заполнение данных использует 8 потоков.,Размер ввода-вывода составляет 128 КБ. Изменение определения рабочей нагрузки предварительно заполненных данных по умолчанию,нонуждаться增加параметробозначение Количество потоковиIOразмер(fwd=format,threads=nn,xfersize=nn

1.4、RD(Run Define)
Язык кода:javascript
копировать
rd=rd1,fwd=(fwd1-fwd3),fwdrate=max,format=restart,elapsed=604800,interval=10
  • rd= Имя, которое идентифицирует действующее определение файловой системы.
  • fwd= Имя, которое идентифицирует определение рабочей нагрузки файловой системы.
  • fwdrate= Количество операций с файловой системой, выполняемых в секунду. Установите максимальное значение, что означает, что никаких ограничений не налагается, и значение адаптируется в соответствии с максимальной интенсивностью.
  • format= Необязательные значения:noyes、илиrestart,Как определить структуру каталогов и файлов предварительной обработки
  • no:Значение параметра по умолчанию,Не выполнять операции предварительной обработки формата,Если файл не существует в тестовом каталоге,vdbench аварийно завершит работу из-за отсутствия доступных файлов для чтения или записи.
  • yes:выражатьудалитьтест Оглавление Ужедокументструктура,и воссоздать новую файловую структуру
  • restart:выражать Создавайте только негенерированные Оглавлениеилидокумент,и увеличивать файлы, которые не достигают своего фактического размера
  • elapsed= Значение по умолчанию:30,продолжительность выполнения теста (в секундах)
  • interval= Интервал вывода результатов на печать (единица измерения: секунды)
2. Заблокировать устройство

Порядок определения файла параметров блочного устройства: HD, SD, WD, RD.

1.1、HD(Host Define)

Необязательные параметры HD не требуют настройки при запуске на одном компьютере. Обычно настройка требуется только во время онлайн-тестирования на нескольких хостах.

Язык кода:javascript
копировать
hd=default,vdbench=/root/vdbench50406,user=root,shell=ssh
hd=hd1,system=node241
hd=hd2,system=node242
hd=hd3,system=node243
  • hd= Имя, которое идентифицирует определение хоста. Если запущено несколько хостов, вы можете использовать hd1, hd2, hd3..., чтобы различать их.
  • system= IP-адрес хоста или имя хоста
  • vdbench= Путь к хранилищу исполняемого файла vdbench. Если пути к хранилищу на нескольких хостах различны, их можно указать отдельно при определении hd.
  • user= Ведомый и главный общаются с помощью пользователя
  • shell= Необязательные значения:rshsshилиvdbench,Значение по умолчанию:rsh,Когда несколько хостов онлайн,Метод связи между главным и подчиненным хостами Когда значение параметраrshчас,Необходимо настроить взаимное доверие главного и подчиненного хоста rsh.,Учитывая, что rsh использует передачу открытого текста,Недостаточный уровень безопасности,Обычно не рекомендует этот способ связи Когда значение параметраsshчас,Необходимо настроить взаимное доверие ssh главного и подчиненного хоста.,в целомLinuxХост онлайнчасиспользоватьэтот метод связи Когда значение параметраvdbench,требуется вообщеslaveхост работаетvdbench rshдавать возможностьvdbenchсобственныйrshдемон,Обычно этот метод связи используется, когда хост Windows находится в сети.
1.2、SD(Storage Define)
Язык кода:javascript
копировать
sd=sd1,hd=hd1,lun=/dev/sdb,openflags=o_direct,threads=6
sd=sd3,hd=hd2,lun=/dev/sdb,openflags=o_direct,threads=6
sd=sd6,hd=hd3,lun=/dev/sdb,openflags=o_direct,threads=6
  • sd= Имя, которое идентифицирует определение хранилища.
  • hd= Имя, которое идентифицирует определение хоста
  • lun= Написать, чтобы заблокировать устройство,Linux использует диск sdb,но Указанный путь/dev/sdb;windowsиспользоватьGтарелка,но Указанный путь\\.\G:
  • openflags= установив наo_directилиdirectio,Операции чтения и записи в небуферизованном кеше
  • threads= Максимальное количество одновременных запросов ввода-вывода к SD
1.3、WD(Workload Define)
Язык кода:javascript
копировать
wd=wd1,sd=sd*,seekpct=100,rdpct=100,xfersize=8k,skew=40
wd=wd2,sd=sd*,seekpct=100,rdpct=0,xfersize=8k,skew=10
wd=wd3,sd=sd*,seekpct=100,rdpct=100,xfersize=1024k,skew=40
wd=wd4,sd=sd*,seekpct=100,rdpct=0,xfersize=1024k,skew=10
  • wd= Имя, которое идентифицирует определение рабочей нагрузки.
  • sd= Имя, которое идентифицирует определение хранилища.
  • seekpct= Необязательные значения:0или100(Также возможноиспользоватьsequentialилиrandomвыражать),Значение по умолчанию:100,Процент случайных поисков,установлен на0часвыражатьзаказ,установлен на100часвыражатьслучайный。
  • rdpct= Процент запросов на чтение от общего количества запросов. Если установлено значение 0, это означает запись, а если установлено значение 100, это означает чтение.
  • xfersize= Размер передаваемых данных. Настройка по умолчанию — 4k.
  • skew= Необязательный параметр, который обычно необходимо указывать при наличии нескольких рабочих нагрузок, указывающий процент рабочей нагрузки в общей рабочей нагрузке (общее отклонение — 100).
1.4、RD(Run Define)
Язык кода:javascript
копировать
rd=rd1,wd=wd*,iorate=max,maxdata=400GB,warmup=30,elapse=604800,interval=5
  • rd= Имя, которое идентифицирует определение запуска.
  • wd= Имя, которое идентифицирует определение рабочей нагрузки.
  • iorate= Обычно используется Необязательные значения:100max,Закрепление для этой рабочей нагрузкиI/Oставка –Когда значение параметра100час,Запускайте рабочие нагрузки со скоростью 100 операций ввода-вывода в секунду.,Когда значение параметра установлено на значение ниже максимальной скорости,Можно добиться эффекта ограничения скорости чтения и записи. –Когда значение параметраmaxчас,Запускайте рабочие нагрузки с максимальной скоростью ввода-вывода,В общем тест максимальной производительности при чтении и записи,Значения параметров всеmax
  • warmup= Время прогрева (единица измерения: секунды). По умолчанию vdbench исключает выходные данные первого временного интервала. Время предварительного нагрева не будет включено в окончательный результат теста. официальный тест не начнется, пока не будет завершена разминка. –когдаintervalдля5、elapsedдля600час,тестпроизводительностьдля2~elapsed/interval(avg_2-120)часмеждумежду隔Внутри的平均производительность –когдаintervalдля5、warmupдля60、elapsedдля600час,тестпроизводительностьдля1+(warmup/interval)~(warmup+elapsed)/interval(avg_13-132)часмеждумежду隔Внутри的平均производительность
  • maxdata= Чтение и запись данныхразмер,Обычно,когдабегатьelapsedчасмеждуназадтест Заканчивать;когдатакой жечасобозначениеelapsedиmaxdataпараметрценитьчас,кбольшинство快бегать完的параметрдляпозволять(Прямо сейчасmaxdataтестчасмежду小于elapsedчас,Программа написанаelapsedОбъем данныхназад Заканчивать) –Когда значение параметра100к Внизчас,Указывает, что объем прочитанных и записанных данных кратен определенному размеру общего хранилища (например, maxdata=2).,2 определения хранилища (объем данных каждого определения хранилища составляет 100 ГБ),но实际Чтение и запись данныхразмердля400G) –Когда значение параметра100к上час,Указывает, что объем данных представляет собой фактический объем прочитанных и записанных данных (можно использовать единицы измерения M, G, T и т. д.).
  • elapsed= Значение по умолчанию:30,продолжительность выполнения теста (в секундах)
  • interval= Интервал отчетности (в секундах)

5. Эксплуатация и использование

1. Работа одной машины

  • Linux  Примеры следующие:,Один узел для тестирования чистого диска,1M последовательная запись,Время теста 600 с,Время прогрева 60с.,Интервал отчетности 2 с
Язык кода:javascript
копировать
[root@node241 vdbench50406]# cat Single-RawDisk.html 
sd=sd1,lun=/dev/sdb,openflag=o_direct
wd=wd1,sd=sd1,seekpct=0,rdpct=0,xfersize=1M
rd=rd1,wd=wd1,iorate=max,warmup=60,elapsed=600,interval=2
[root@node241 vdbench50406]# 
[root@node241 vdbench50406]# ./vdbench -f Single-RawDisk.html
  • Window  Примеры следующие:,Один узел для тестирования файловой системы,1M последовательная запись,Глубина каталога равна 2.,Количество каталогов на уровне — 3.,Количество файлов в каждом каталоге — 10.,Размер каждого файла составляет 200 МБ.,время теста 600 с,Время отчета 2 с
Язык кода:javascript
копировать
E:\vdbench50406>more "Single FileSystem.txt"
fsd=fsd1,anchor=E:\Sigle-FileSystem,depth=2,width=3,files=10,size=200M
fwd=fwd1,fsd=fsd1,operation=write,xfersize=1M,fileio=sequential,fileselect=rando
m,threads=2
rd=rd1,fwd=fwd1,fwdrate=max,format=yes,elapsed=600,interval=5
E:\vdbench50406>
E:\vdbench50406>vdbench -f "Single FileSystem.txt"

2. Онлайн-работа

  • Linux 1、в соответствии с2. Установка и развертывание,Настройка взаимного доверия ssh для нескольких хостов 2. Главный хост может запустить файл параметров тестирования. Примеры следующие:,Три узла подключены к сети для голых дисков,1M последовательная запись,Объем тестовых данных составляет 400 ГБ.,Время прогрева 30с.,Интервал отчета 5 с.
Язык кода:javascript
копировать
[root@node241 vdbench50406]# cat Multi-RawDisk
hd=default,vdbench=/root/vdbench50406,user=root,shell=ssh
hd=hd1,system=node241
hd=hd2,system=node242
hd=hd3,system=node243
sd=sd1,hd=hd1,lun=/dev/sdb,openflag=o_direct
sd=sd2,hd=hd2,lun=/dev/sdb,openflag=o_direct
sd=sd3,hd=hd3,lun=/dev/sdb,openflag=o_direct
wd=wd1,sd=sd*,seekpct=0,rdpct=0,xfersize=1M
rd=rd1,wd=wd1,iorate=max,maxdata=100M,elapsed=64800,warmup=30,interval=5
[root@node241 vdbench50406]# 
[root@node241 vdbench50406]# ./vdbench -f Multi-RawDisk
  • Window 1. Все подчиненные хосты запускают сам процесс демона rsh vdbench.
Язык кода:javascript
копировать
E:\vdbench50406>vdbench rsh

2. Главный хост может запустить файл параметров тестирования. Пример следующий, три узла тестируются онлайн на предмет файловой системы, последовательная запись 1М, глубина каталога 2, количество каталогов в каждом слое 3, количество файлов в каждом каталоге 10000, размер каждого Размер файла — 200 МБ, время тестирования — 600 с, интервал отчета — 1 с.

Язык кода:javascript
копировать
E:\vdbench50406>more "Multi FileSystem.txt"
hd=default,vdbench=E:\vdbench50406,user=Micah,shell=vdbench
hd=hd1,system=66.66.66.250
hd=hd2,system=66.66.66.252
fsd=fsd1,anchor=Z:\Sigle-FileSystem-01,depth=2,width=3,files=10000,size=200M
fsd=fsd2,anchor=Z:\Sigle-FileSystem-02,depth=2,width=3,files=10000,size=200M
fwd=default,operation=write,xfersize=1M,fileio=sequential,fileselect=random,threads=16
fwd=fwd1,fsd=fsd1,host=hd1
fwd=fwd2,fsd=fsd2,host=hd2
rd=rd1,fwd=fwd*,fwdrate=max,format=yes,elapsed=600,interval=1
E:\vdbench50406>
E:\vdbench50406>vdbench -f "Multi FileSystem.txt"

6. Анализ результатов

Когда vdbench завершит выполнение нагрузочного теста,будет установлен Оглавление Внизгенерироватьoutputдокументпапка,Включить файл результатов теста внутри

1. Выходной файл

  • errorlog.html При запуске теста для включения проверки данных могут появиться сообщения об ошибках, например:
    • Неверное чтение ключа
    • Недопустимое чтение lba (адрес логического байта сектора)
    • Неверный SD или FSD чтение имени
    • Повреждение данных
    • плохие сектора
  • flatfile.html vdbench Столбец за столбцом ASCII информация о формате,可киспользоватьparseflatРезультаты анализа параметров
Язык кода:javascript
копировать
  ./vdbench parseflat -i <flatfile.html> -o output.csv [-c col1 col2 ..] [-a] [-f col1 value1 col2 value2..]
    -i input flatfile, e.g. output/flatfile.html
    -o output CSV file name (default stdout)
    -c which column to write to CSV. Columns are written in the order specified
    -f filters: 'if (colX == valueX) ... ...' (Alphabetic compare)
    -a include only the 'avg' data. Default: include only non-avg data.
    -i означает файл для анализа. Здесь записывается файл Flatfile.html в выходном каталоге vdbench. Другие файлы не могут быть проанализированы нормально, если они записаны;
    -o — это проанализированный выходной файл, а каталог хранения можно указать вручную. Формат файла — CSV. Столбцы этого файла определяются параметром -c. Порядок столбцов соответствует порядку параметра -c.
    -a означает, что в файл csv записывается только среднее значение в процессе тестирования.

  Примеры следующие:
  .\vdbench.bat parseflat -i D:\vdbench50406\output\flatfile.html -c run rate MB/sec seekpct rdpct bytes/io threads resp -o d:\output.csv -a
vdbench parseflat arguments:
Argument 0: -i
Argument 1: D:\vdbench50406\output\flatfile.html
Argument 2: -c
Argument 3: run
Argument 4: rate
Argument 5: MB/sec
Argument 6: seekpct
Argument 7: rdpct
Argument 8: bytes/io
Argument 9: threads
Argument 10: resp
Argument 11: -o
Argument 12: D:\output.csv
Argument 13: -a
14:12:49.265 ParseFlat completed successfully.
  • histogram.html Файл, содержащий гистограммы времени отклика в текстовом формате.
  • logfile.html Включать Java Код записывает копию каждой строки информации в окно консоли. файл журнала.html В основном используется для целей отладки
  • parmfile.html Информация о параметрах конфигурации запуска включатьтеста
  • summary.html Записывайте всю информацию о данных, отображайте общую производительность и рабочую нагрузку в течение каждого интервала отчетности, а также средневзвешенное значение всех интервалов, кроме первого.
  • totals.html Запишите все данные и посчитайтеназадсреднее значение,Обычно результаты тестов берут значения из этого файла,Средневзвешенное значение всех интервалов, кроме первого

2. Анализ результатов

2.1. Файловая система
Язык кода:javascript
копировать
Параметры теста следующие:
hd=default,vdbench=E:\vdbench50406,user=Micah,shell=vdbench
hd=hd1,system=66.66.66.250
hd=hd2,system=66.66.66.252
fsd=fsd1,anchor=Z:\Sigle-FileSystem-01,depth=2,width=3,files=10,size=4M
fsd=fsd2,anchor=Z:\Sigle-FileSystem-02,depth=2,width=3,files=10,size=4M
fwd=default,operation=write,xfersize=1M,fileio=sequential,fileselect=random,threads=2
fwd=fwd1,fsd=fsd1,host=hd1
fwd=fwd2,fsd=fsd2,host=hd2
rd=rd1,fwd=fwd*,fwdrate=max,format=yes,elapsed=600,interval=5

Результаты теста следующие:
18:47:03.001 Starting RD=format_for_rd1

Июнь 04, 2020 .Interval. .ReqstdOps... ...cpu%...  read ....read..... ....write.... ..mb/sec... mb/sec .xfer.. ...mkdir.... ...rmdir.... ...create... ....open.... ...close.... ...delete...
                          rate   resp total  sys   pct   rate   resp   rate   resp  read write  total    size  rate   resp  rate   resp  rate   resp  rate   resp  rate   resp  rate   resp
18:48:40.218   avg_2-20   57.6  6.244  13.4 2.99   0.0    0.0  0.000   57.6  6.244  0.00  7.20   7.20  131072   0.2 104.49   0.2 41.526   1.8 7527.0   1.8 192.01   1.8 7134.3   1.8 21.984

18:48:42.000 Starting RD=rd1; elapsed=600; fwdrate=max. For loops: None

18:58:42.205  avg_2-120    6.2  1.063  13.0 2.80   0.0    0.0  0.000    6.2  1.063  0.00  6.24   6.24 1048576   0.0  0.000   0.0  0.000   0.0  0.000   1.6 47.864   1.6 2401.1   0.0  0.000

totals.htmlОбычно включает две части,Часть перваядля Хранение Среднее значение производительности структуры каталогов файлов и заполнения данных. Вторая часть — это среднее значение производительности за все временные интервалы, кроме первого временного интервала во время выполнения теста. В основном смотрите на содержание второй части.

  • Interval Серийный номер интервала отчета. Результат теста обычно представляет собой средневзвешенное значение всех временных интервалов, кроме первого временного интервала. Если elapsed=600,interval=5, результатом производительности является среднее значение от 2-го до 120-го интервала (avg_2-120).
  • ReqstdOps
    • rate Чтение и запись в секундуI/Oчисло(Чтение и запись IOPS),может пройтиrdПараметры определения запускаfwdrateконтроль когдаfwdrateдляmaxчас,по максимумуI/Oставкабегать工作负载 когдаfwdrateдля低于большинство大I/0ставка Цель одначислоценитьчас,Может ограничивать скорость чтения и записи,Запускайте рабочие нагрузки с фиксированной скоростью ввода-вывода
    • resp Чтение и запись ответа на запросчасмежду(Задержка чтения и записи),единицадляms
  • cpu%
    • tatol Общее использование процессора
    • sys Использование процессора системы
  • read pct Процент запросов на чтение от общего количества запросов. Когда он равен 0, это означает запись, когда он равен 100, это означает чтение.
  • read
    • rate Чтение в секундуI/Oчисло(Чтение операций ввода-вывода в секунду
    • resp Чтение ответа на запросчасмежду(задержка чтения),единицадляms
  • write
    • rate писать в секундуI/Oчисло(Запись операций ввода-вывода в секунду
    • resp Написать ответ на запросчасмежду(задержка записи),единицадляms
  • mb/sec
    • read Скорость чтения в секунду
    • write Скорость записи в секунду
    • total Сумма скоростей чтения и записи в секунду
  • xfersize Каждое чтение и записьI/OОбъем переданных данных(Прямо сейчас Одиночное чтение и записьI/Oразмер),единицадлябайтB
2.2. Заблокировать устройство
Язык кода:javascript
копировать
Параметры теста следующие:
messagescan=no
hd=default,vdbench=/root/vdbench50406,user=root,shell=ssh
hd=hd1,system=node241
hd=hd2,system=node242
hd=hd3,system=node243
sd=sd1,hd=hd1,lun=/dev/sdb,openflag=o_direct
sd=sd2,hd=hd2,lun=/dev/sdb,openflag=o_direct
sd=sd3,hd=hd3,lun=/dev/sdb,openflag=o_direct
wd=wd1,sd=sd*,seekpct=0,rdpct=0,xfersize=1M
rd=rd1,wd=wd1,iorate=max,elapsed=600,warmup=30,interval=5

Результаты теста следующие:
<a name="_1143839598"></a><i><b>19:02:15.001 Starting RD=rd1; I/O rate: Uncontrolled MAX; elapsed=600 warmup=30; For loops: None</b></i>

Jun 04, 2020  interval        i/o   MB/sec   bytes   read     resp     read    write     resp     resp queue  cpu%  cpu%
                             rate  1024**2     i/o    pct     time     resp     resp      max   stddev depth sys+u   sys
19:12:46.068 avg_7-126      82.74    82.74 1048576   0.00  289.158    0.000  289.158 2092.803  155.103  23.9  16.3  14.2
  • interval Сообщайте серийный номер интервала, результат теста обычно представляет собой средневзвешенное значение всех временных интервалов, кроме первого раза. Если установлено время прогрева, эту часть данных теста также необходимо исключить. Например, прошедшее = 600, разминка = 30, интервал = 5, результат производительности — это среднее значение от 7-го до 126-го интервала (avg_7-126).
  • i/o rate Чтение и запись в секундуI/Oчисло(Чтение и запись IOPS),может пройтиrdПараметры определения запускаiorateконтроль когдаiorateдляmaxчас,по максимумуI/Oставкабегать工作负载 когдаiorateдля低于большинство大I/0ставка Цель одначислоценитьчас,Может ограничивать скорость чтения и записи,Запускайте рабочие нагрузки с фиксированной скоростью ввода-вывода
  • MB/sec Чтение и запись в секундускорость(Чтение и запись пропускной способности) Примечание: Согласно официальному руководству,
  • bytes i/0 Каждое чтение и записьI/OОбъем переданных данных(Прямо сейчас Одиночное чтение и записьI/Oразмер),единицадлябайтB,может пройтиwdПараметры определения рабочей нагрузкиxfersizeконтроль
  • read pct Запросы на чтение в процентах от общего числа запросов,может пройтиwdПараметры определения рабочей нагрузкиrdpctконтроль когдаrdpctдля0час,выражатьтест Модельдля Писать когдаrdpctдля100час,Представляет тестовую модель как прочитанную
  • resp time запросить ответчасмежду(Задержка чтения и записи),единицадлямиллисекундаms
  • read resp 读取запросить ответчасмежду,единицадлямиллисекундаms
  • write resp писатьзапросить ответчасмежду,единицадлямиллисекундаms
  • resp max большинство大запросить ответчасмежду,единицадлямиллисекундаms
  • resp stddev запросить ответчасмежду标позволять偏差,единицадлямиллисекундаms
  • queue depth Чтение и запись глубины очереди ввода/0
  • cpu% sys+u Использование пространства ядра и пользовательского пространства ЦП
  • cpu% sys Использование процессорного пространства ядра 29 мая 2020 г. 16:00:16 Clear

7. Инструкции по тестированию

1. Итог теста

  1. Количество потоков (thread) обычно устанавливается равным общему количеству потоков клиентского процессора. grep 'processor' /proc/cpuinfo | sort -u | wc -l
  2. Общий объем тестовых данных должен в два раза превышать размер памяти клиента.
  3. Вам необходимо очистить информацию о кэше клиента при чтении модели. sync;echo 3 > /proc/sys/vm/drop

2. Общие параметры испытаний

  • 4M последовательная запись Глубина каталога 2, количество одноуровневых каталогов 100, количество файлов в одном каталоге 100, размер одного файла 4 МБ, размер блока ввода-вывода 1 МБ, последовательная запись
Язык кода:javascript
копировать
hd=default,vdbench=/root/vdbench50406,user=root,shell=ssh
hd=hd1,system=node21
hd=hd2,system=node22
hd=hd3,system=node23
hd=hd4,system=node24
hd=hd5,system=node25
hd=hd6,system=node26
fsd=fsd1,anchor=/client/test01,depth=2,width=100,files=100,size=4M,shared=yes
fwd=format,threads=24,xfersize=1m
fwd=default,xfersize=1m,fileio=sequential,fileselect=sequential,operation=write,threads=24
fwd=fwd1,fsd=fsd1,host=hd1
fwd=fwd2,fsd=fsd1,host=hd2
fwd=fwd3,fsd=fsd1,host=hd3
fwd=fwd4,fsd=fsd1,host=hd4
fwd=fwd5,fsd=fsd1,host=hd5
fwd=fwd6,fsd=fsd1,host=hd6
rd=rd1,fwd=fwd*,fwdrate=max,format=restart,elapsed=600,interval=1
  • 4M последовательное чтение Глубина каталога 2, количество одноуровневых каталогов 100, количество файлов в одном каталоге 100, размер одного файла 4 МБ, размер блока ввода-вывода 1 МБ, последовательное чтение
Язык кода:javascript
копировать
hd=default,vdbench=/root/vdbench50406,user=root,shell=ssh
hd=hd1,system=node21
hd=hd2,system=node22
hd=hd3,system=node23
hd=hd4,system=node24
hd=hd5,system=node25
hd=hd6,system=node26
fsd=fsd1,anchor=/client/test02,depth=2,width=100,files=100,size=4M,shared=yes
fwd=format,threads=24,xfersize=1m
fwd=default,xfersize=1m,fileio=sequential,fileselect=sequential,operation=read,threads=24
fwd=fwd1,fsd=fsd1,host=hd1
fwd=fwd2,fsd=fsd1,host=hd2
fwd=fwd3,fsd=fsd1,host=hd3
fwd=fwd4,fsd=fsd1,host=hd4
fwd=fwd5,fsd=fsd1,host=hd5
fwd=fwd6,fsd=fsd1,host=hd6
rd=rd1,fwd=fwd*,fwdrate=max,format=restart,elapsed=600,interval=1
  • 8М смешанное чтение и письмо Глубина каталога 2, количество одноуровневых каталогов 100, количество файлов в одном каталоге 100, размер одного файла 8M, размер блока ввода-вывода 1M, смешанное чтение и запись (соотношение чтения и записи 6:4)
Язык кода:javascript
копировать
hd=default,vdbench=/root/vdbench50406,user=root,shell=ssh
hd=hd1,system=node21
hd=hd2,system=node22
hd=hd3,system=node23
hd=hd4,system=node24
hd=hd5,system=node25
hd=hd6,system=node26
fsd=fsd1,anchor=/client/test03,depth=2,width=100,files=100,size=8M,shared=yes
fwd=format,threads=24,xfersize=1m
fwd=default,xfersize=1m,fileio=random,fileselect=random,rdpct=60,threads=24
fwd=fwd1,fsd=fsd1,host=hd1
fwd=fwd2,fsd=fsd1,host=hd2
fwd=fwd3,fsd=fsd1,host=hd3
fwd=fwd4,fsd=fsd1,host=hd4
fwd=fwd5,fsd=fsd1,host=hd5
fwd=fwd6,fsd=fsd1,host=hd6
rd=rd1,fwd=fwd*,fwdrate=max,format=restart,elapsed=600,interval=1

Семь、Q&A

1、open failed for xxx

– Описание проблемы:

Во время теста с использованием vdbench тест был прерван и появилось следующее сообщение об ошибке:

Язык кода:javascript
копировать
19:37:41.155 19:37:44.813 error: 20
19:37:41.155 19:37:44.813 file_open(), open /trash/64M/vdb.1_47.dir/vdb.2_24.dir/vdb_f0002.file failed
19:37:41.155 19:37:44.814 error: 20
19:37:41.155 19:37:44.814 file_open(), open /trash/64M/vdb.1_47.dir/vdb.2_24.dir/vdb_f0003.file failed
19:37:41.156 19:37:44.814 Maximum native memory allocation:    1,048,576; Current allocation:    1,048,576
19:37:41.156 19:37:44.814 Maximum native memory allocation:    1,048,576; Current allocation:    1,048,576
19:37:41.156 19:37:44.814 error: 20
19:37:41.156 19:37:44.814 
19:37:41.156 19:37:44.814 open failed for /trash/64M/vdb.1_47.dir/vdb.2_24.dir/vdb_f0002.file
19:37:41.156 19:37:44.814 
19:37:41.158 java.lang.RuntimeException: open failed for /trash/64M/vdb.1_47.dir/vdb.2_24.dir/vdb_f0002.file
– Анализ причин:

По умолчанию vdbench ограничивает использование памяти Java. Во время теста недостаток рабочей памяти Java приводит к аварийному прерыванию теста.

– Решения:

Увеличьте параметры памяти Java для запуска сценария vdbench.

Язык кода:javascript
копировать
[root@node40 ~]# cat vdbench50406/vdbench
if [ "$1" == "SlaveJvm" ]; then
  $java -client -Xmx10240m -Xms128m -cp $cp Vdb.SlaveJvm $*
  exit $?
else
  $java -client -Xmx10240m  -Xms64m  -cp $cp Vdb.Vdbmain $*
  exit $?
fi

Примечание:XmxвыражатьjvmМаксимальный пул распределения памяти,Xmsвыражать初始Внутри存分配池 Первоначально процесс запускается с размером памяти Xms. Если свободная память в куче меньше 40 %, jvm увеличит память до Xmx; когда свободная память в куче превысит 70 %, jvm уменьшит память до Memory, Xmx и Xms можно установить на одно и то же значение параметра.

2、linux/aarch64.so does not exist

– Описание проблемы:

Arm-сервер с запущенным vdbench,Возникла проблема несоответствия общей библиотекиlinux/aarch64.so does not exist,Подскажите, что требуется ручная компиляция

Язык кода:javascript
копировать
[root@node163 vdbench50407]# ./vdbench -t

14:07:47.486 Created output directory '/root/vdbench50407/output'
14:07:47.737 input argument scanned: '-f/tmp/parmfile'
14:07:47.866 Starting slave: /root/vdbench50407/vdbench SlaveJvm -m localhost -n localhost-10-220209-14.07.47.444 -l localhost-0 -p 5570   
14:07:47.890 
14:07:47.890 File /root/vdbench50407/linux/aarch64.so does not exist.
14:07:47.891 This may be an OS that a shared library currently 
14:07:47.891 is not available for. You may have to do your own compile.
14:07:47.891 t: java.lang.UnsatisfiedLinkError: Can't load library: /root/vdbench50407/linux/aarch64.so
14:07:47.892 
14:07:47.892 Loading of shared library /root/vdbench50407/linux/aarch64.so failed.
14:07:47.892 There may be issues related to a cpu type not being 
14:07:47.892 acceptable to Vdbench, e.g. MAC PPC vs. X86
14:07:47.893 Contact me at the Oracle Vdbench Forum for support.
14:07:47.893 
14:07:48.395 
14:07:48.396 Failure loading shared library
14:07:48.396 
java.lang.RuntimeException: Failure loading shared library
    at Vdb.common.failure(common.java:350)
    at Vdb.common.get_shared_lib(common.java:1103)
    at Vdb.Native.<clinit>(Native.java:31)
    at Vdb.common.signal_caller(common.java:737)
    at Vdb.ConnectSlaves.connectToSlaves(ConnectSlaves.java:98)
    at Vdb.Vdbmain.masterRun(Vdbmain.java:814)
    at Vdb.Vdbmain.main(Vdbmain.java:628)
– Анализ причин:

vdbenchкорень Оглавлениединамическая библиотекадокументlinux/linux64.soдляна основеx86скомпилировано,Необходимо основываться наaarch64Перекомпилироватьlinux/linux64.soдинамическая библиотекадокумент

Язык кода:javascript
копировать
[root@node163 vdbench50407]# ls linux/
config.sh  linux32.so  linux64.so  sparc64.so
[root@node163 vdbench50407]# file linux/linux64.so 
linux/linux64.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), statically linked, BuildID[sha1]=34a31f32956f21153c372a95e73c02e84ddd29f8, not stripped
– Решения:
  • Загрузите пакет исходного кода vdbench50407 Разархивируйте пакет исходного кода и создайте каталог Linux.
Язык кода:javascript
копировать
mkdir vdbench50407-src
unzip vdbench50407.src.zip -d vdbench50407-src/
cd vdbench50407-src/src/
mkdir linux
  • Войдите в каталог Jni и измените файл make.linux. Основные изменения заключаются в следующем: – Укажите путь к исходному коду vdbench (vdb=xx) – обозначениеjdkпуть(java=xx),в целомсуществовать/usr/lib/jvm/путь Вниз – удалитьполный текст-m32и-m64характер
Язык кода:javascript
копировать
cd Jni/
sed -i 's#vdb=$mine/vdbench504#vdb=/root/vdbench50407-src/src#g' make.linux
sed -i 's#java=/net/sbm-240a.us.oracle.com/export/swat/swat_java/linux/jdk1.5.0_22/#java=/usr/lib/jvm/java-1.8.0-openjdk/#g' make.linux
sed -i 's/-m32//g' make.linux 
sed -i 's/-m64//g' make.linux 
  • Выполнение операций компиляции исходного кода./make.linux Выполнено успешноназад会существовать../linuxОглавление Внизгенерироватьlinux32.soиlinux64.soдокумент,Воляlinux64.soдокументскопировать вvdbenchтестинструменткорень Оглавлениеlinux/aarch64.soВниз,Перезапустите vdbenchtest
Язык кода:javascript
копировать
[root@node163 Jni]# ./make.linux
target directory: /root/vdbench50407-src/src
Compiling 32 bit
Linking 32 bit

Compiling 64 bit
Linking 64 bit

[root@node163 Jni]# ll ../linux/
total 160
-rwxrwxrwx 1 root root 78656 Feb  9 14:54 linux32.so
-rwxrwxrwx 1 root root 78656 Feb  9 14:54 linux64.so

[root@node163 Jni]# cp ../linux/linux64.so /root/vdbench50407/linux/aarch64.so

3、Raw device ‘sd=sd1,lun=\.\G:’ does not exist, or no permissions.

– Описание проблемы:

Использование vdbenchtest производительности чистого диска в системе Windows,Скрипт не удалось запустить,намекатьRaw device 'sd=sd1,lun=\\.\G:' does not exist, or no permissions.

Язык кода:javascript
копировать
D:\vdbench50406>more raw-test.txt
sd=sd1,lun=\\.\G:
wd=wd1,sd=sd1,seekpct=0,rdpct=0,xfersize=1M
rd=rd1,wd=wd1,iorate=max,maxdata=100M,elapsed=64800,warmup=30,interval=5

D:\vdbench50406>vdbench.bat -f raw-test.txt
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Vdbench distribution: vdbench50406 Wed July 20 15:49:52 MDT 2016
For documentation, see 'vdbench.pdf'.

17:35:24.328 input argument scanned: '-fraw-test.txt'
17:35:24.375 Starting slave: D:\vdbench50406\vdbench SlaveJvm -m localhost -n localhost-10-220119-17.35.24.293 -l localhost-0 -p 5570
17:35:24.834 All slaves are now connected
17:35:25.263 Raw device 'sd=sd1,lun=\\.\G:' does not exist, or no permissions.
17:35:25.764
17:35:25.764 Please check above failures
17:35:25.765
java.lang.RuntimeException: Please check above failures
        at Vdb.common.failure(common.java:335)
        at Vdb.InfoFromHost.matchDataWithSds(InfoFromHost.java:674)
        at Vdb.InfoFromHost.receiveInfoFromHost(InfoFromHost.java:485)
        at Vdb.SlaveOnMaster.processSlave(SlaveOnMaster.java:151)
        at Vdb.SlaveOnMaster.run(SlaveOnMaster.java:42)
– Решения:

1. Проверьте правильность пути к голому диску.,Например, производительность тестового диска без диска,нотестпараметробозначениедляlun=\\.\G: 2. Проверьте, есть ли у вас права на выполнение. Окно cmd необходимо запускать от имени администратора.

4、Minimum required Java version for Vdbench is 1.7.0

– Описание проблемы:

Запуск vdbench под Linux не удался,намекатьMinimum required Java version for Vdbench is 1.7.0; Vdbench terminated.

Язык кода:javascript
копировать
root@node65:/home/vdbench50406# ./vdbench -t

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Vdbench distribution: vdbench50406 Wed July 20 15:49:52 MDT 2016
For documentation, see 'vdbench.pdf'.

*
*
*
* Minimum required Java version for Vdbench is 1.7.0; 
* You are currently running 11.0.9.1
* Vdbench terminated.
*
*
*
CTRL-C requested. vdbench terminating
– Решения:

Ознакомьтесь с официальными инструкциями. Версии до vdbench50407 имеют функцию обнаружения Java (версия vdbench50407 была удалена. Не изменяя версию Java существующей среды, вы можете обновить версию до версии vdbench50407, чтобы решить проблему).

Язык кода:javascript
копировать
   // Removed as per 50407 because of java 1.10.x
    //checkJavaVersion();

    //....

     private static void checkJavaVersion()
  {
    if (common.get_debug(common.USE_ANY_JAVA))
      return;
    if (!JVMCheck.isJREValid(System.getProperty("java.version"), 1, 7, 0))
    {
      System.out.print("*\n*\n*\n");
      System.out.println("* Minimum required Java version for Vdbench is 1.7.0; \n" +
                         "* You are currently running " + System.getProperty("java.version") +
                         "\n* Vdbench terminated.");
      System.out.println("*\n*\n*\n");

      System.exit(-99);
    }
  } 

Примечания к выпуску: # Vdbench 50407 теперь доступен.

Язык кода:javascript
копировать
50407rc29
*   The check to make sure you are running java 1.7 or higher has been removed.

Заявление об авторских правах: Содержание этой статьи добровольно предоставлено пользователями Интернета, а мнения, выраженные в этой статье, представляют собой только точку зрения автора. Этот сайт предоставляет только услуги по хранению информации, не имеет никаких прав собственности и не принимает на себя соответствующие юридические обязательства. Если вы обнаружите на этом сайте какое-либо подозрительное нарушение авторских прав/незаконный контент, отправьте электронное письмо, чтобы сообщить. После проверки этот сайт будет немедленно удален.

Издатель: Full stack программист - пользователь IM, укажите источник для перепечатки: https://javaforall.cn/213671.html Исходная ссылка: https://javaforall.cn

boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода