Skip to main content

Writes and Reads

Use the Writes and Reads section to configure the block sizes, the percentage of random versus sequential behaviors and the number asynchronous I/Os. While there is a separate section for writes and reads, the configuration options for writes and reads are the same. To choose whether a single block size or a distribution is used, select the down arrow next to the current value.

2019-11-14_14-13-10.png

Use the write/read pattern to select the desired percentage of commands that are followed by a command to a subsequent location to the previous command verses from a new random location. Dragging it to the left decreases the random and increases the sequential percentage. The current settings indicate that one in three writes are random and two in three writes are sequential. This setting is only available for block and file protocols because object protocols do not permit access to a portion of an object. In the case of a file workload that is configured with small file sizes, it might not be possible to achieve significant sequential access. This depends on the ratio of files sizes to block sizes.

If you want to use the same parameters for reads as for writes, check the check-box in the Reads section.

Request/Block Sizes

Most protocols break up actual application requests in to chunks of different sizes. Request sizes are sometimes referred to as block sizes. Referring to them as block sizes is misleading as there is a block size (minimum accessible size) associated with the actual parsing of the data on an array. The request sizes used depend on the application, OS, and protocol. Most real world applications use a variety of request sizes though there are some that only use a single request size.

To configure a workload to use a single size, use constant block size. The default value for constant block size is 512 bytes. 1 MB is supported for NFS and 2 MB is supported for SMB.

2019-11-14_14-14-15.png

In addition to constant block size, you can use the bin distribution of block sizes and custom bins. You can use the default or create your own custom bins. A maximum of eight bins are supported.

2019-11-14_14-14-54.png

You can remove the default bins and replace them with your own custom bins by clicking +Add Bin. You can specify the block size in bytes, kilobytes (KB), megabytes (MB), or gigabytes (GB).

2019-11-14_14-24-18.png

You can change the ratio of size distributions by moving the sliders up to increase the value, or down to decrease the value. You can set the slider maximum by selecting the maximum percentage value the sliders can have in the top righthand corner of the bin distribution section. An average file block size is displayed as often only the average block size in an environment is known or can be calculated.

It is import actual typical block sizes are used to achieve an odd average block size rather than using the odd size itself. It is very unusual and not desired for systems to be configured with odd block sizes. Arrays are typically optimized to handle requests that are aligned to the array’s block size.

For file protocols the request sizes are typically smaller than for block protocols so different defaults are used depending on the protocol though any custom setting can be configured if the protocol supports it.

In addition to block sizes, you can also specify how much of the read / write operations are performed on sequentially incrementing offsets or random offsets.

2019-11-14_14-25-58.png

Another behavior you can control is the number of Asynchronous I/Os, which at a high level specifies how many read / write requests can be outstanding (i.e., without responses) simultaneously. However, the exact implementation of this setting differs a little bit depending on the protocol, and they are described elsewhere, in topics that explain each workload in more detail. The setting for the number of Asynchronous I/Os is applied to both the sequential and the random requests.

2019-11-14_14-28-13.png