Я хочу, чтобы иметь возможность легко установить скорость записи файла программы сравнения. Это программа python, которую я использую для тестирования другой системы. Я хотел бы иметь возможность контролировать скорость создания файла. Один из методов, о котором я думал, состоит в том, чтобы иметь функцию с аргументом для количества создаваемых файлов. Это можно было бы вызвать в цикле, который отслеживает часы и только вызывает функцию каждую секунду. Это выполнило бы требование создания определенного количества файлов каждую секунду. Проблема в том, что может быть кусок мертвого времени (миллисекунды, но все же). Мне нужна непрерывная нагрузка.Programmatically Set File Write Rate
ответ
Вам необходимо как-то отслеживать время, необходимое для фактического выполнения вызовов ввода-вывода файлов, и отрегулировать время сна между операциями. Регулировка должна быть непрерывной, так как вызовы сна и ввода-вывода могут занять различное количество времени в зависимости от загрузки системы.
Если вы хотите выполнять N операций в секунду в среднем, вы можете запускать петли в несколько секунд (или дольше), и после каждого раунда смотрите, если вы работаете слишком быстро или медленно, и отрегулируйте сон () время между каждой операцией вверх или вниз на основе этого. Если вы работаете слишком быстро, увеличьте время сна больше, если вы только немного быстрее, увеличивайте меньше.
import time
# target rate: 100 ops/1 second
target = 100.0
round_time = 1.0
# at first, assume the writes are immediate
sleepTime = round_time/target
ops = 0
t_start = time.time()
while True:
#doYourIOoperationHere()
ops += 1
time.sleep(sleepTime)
# adjust sleep time periodically
if ops == target:
t_end = time.time()
elapsed = t_end - t_start
difference = round_time - elapsed
# print out the vars here to debug adjustment
print "%d ops done, elapsed %.3f, difference %.3f" % (ops, elapsed, difference)
# increase or decrease the sleep time, approach the target time slowly
sleepTime += difference/target/2
t_start = time.time()
ops = 0
Или что-то в этих строках (упрощенный код непроверенный). Это может не сработать при очень высоких скоростях ввода-вывода или загрузке системы, возможно, вам придется начать выполнять несколько операций записи за один вызов сна. Кроме того, может потребоваться более продолжительное усреднение, чем 1 секунда.
- 1. Generate Class.vb File Programmatically
- 2. JQuery File File Delete File Programmatically
- 3. Set Base Image Programmatically
- 4. Set ListView Height Programmatically
- 5. Set minHeight of LinearLayout Programmatically
- 6. Set Toolbar Icon Color Programmatically
- 7. Gridview Set Column ReadOnly Programmatically
- 8. File Read/Write Locks
- 9. cssnext not write file
- 10. Perl File Write Issue
- 11. Python Hex File Write
- 12. Android NDK Write File
- 13. Flex Write File
- 14. Concurrent File read write
- 15. php write file issue
- 16. Python File Read + Write
- 17. read write file Substitution_Ciphers
- 18. Ruby Simple Read/Write File (Copy File)
- 19. IO File Read/Write Verilog
- 20. File Write Thread safe C++
- 21. C# Write Json file error
- 22. python write to csv file
- 23. C# file read/write lock
- 24. Lambda File Write to S3
- 25. File Read/Write in android
- 26. NodeJS write base64 image-file
- 27. PHP: Write File from gunzip
- 28. file read, write and save
- 29. File Write - Unauthorized Access Exception
- 30. ios file write не работает
ориентир - это сложно сделать хорошо (и ошибочные тесты хуже, чем бесполезно); есть много эталонных приложений, изобретать это колесо может быть сложнее, чем вы думаете. –
Мне просто нужно создать файлы для загрузки нагрузки на приложение, которое я тестирую. Тем не менее, я фактически проверяю производительность сервера Linux под этой загрузкой. Хотя я буду проверять места в этом приложении, чтобы увидеть, можно ли повысить производительность. –