check that, read balance is: time based closest head round robin algorithms plus.... failed device problem and write-mostly with time based we can drop write-mosty.... just make the time of that device very high 2011/2/2 Roberto Spadim <roberto@xxxxxxxxxxxxx>: > it's cpu/mem consuming if use a complex model, and less cpu/mem > consuming if use a single model > > another idea.... > many algorithm.... > > first execute time based > it selected a bug (failed) device > execute closest head > if selected a bug (failed) device > execute round robin > if selected a bug (failed) device > select first usable non write-mostly > if selected a bug (failed) device > select first usable write-mostly > if end of devices, stop md raid > > to make this, today... we need a read_algorithm at > /sys/block/md0/xxxxxx, to select what algorith to use, write algorithm > is based on raid being used.. raid0 make linear and stripe, raid1 make > mirror, there's no algorithm to use here... > we need some files at /sys/block/md0/xxx to manage 'devices' time > model (parameters) > we need a adaptive algorithm to update parameters and make it closest > possible to real model of 'devices' > a raid0 have global parameters, inside raid0 devices have per device parameters > a raid1 over raid0, should use raid0 parameters > raid0 over devices, should use devices parameters > > > 2011/2/2 Roberto Spadim <roberto@xxxxxxxxxxxxx>: >> time based: is the time to: >> HD:head positioning , SSD: time to send command to ROM chip >> HD:read/write time (disk speed - rpm), SSD: time to write/read (time >> to ssd rom chip receive bytes) >> that's time based >> >> what is fast por read? >> consider that time based must know that disk is doing a I/O and that >> you have a time to end, this time to end is another time in algorithm >> >> for example: >> NBD (network block device) >> time to send read message + time to send command to rom or head positioning >> read/write time: time to nbd server return the read/write bytes >> >> what algorithm should do? >> calculate all time or all mirrors, including time to end current >> request (if only one request could be processed, or if allow more than >> 1 request, the time spent to start our command) >> after all time calculated, select the minimal value/device >> >> that's time based >> it's not based on round robin >> it's not based on closest head >> it's based on device speed to: >> *(1)position head/send rom command >> *(2)read/write time (per total of bytes read/write) >> *(3)time to start out request command (if don't allow more than 1 >> request per time, don't have a device queue) >> >> the total time per device will tell us the best device to read >> if we mix, nbd + ssd + hdd (5000rpm) + hdd(7500rpm) + hdd(10000rpm) + >> hdd(15000rpm) >> we can get the best read time using this algorithm >> the problem? we must run a constante benchmark to get this values *(1) >> *(2) *(3) and calculate good values of time spent on each process >> >> resuming... whe need a model of each device (simple-constants or very >> complex-neural network?), and calculate time spent per device >> nice? >> >> >> 2011/2/2 Robin Hill <robin@xxxxxxxxxxxxxxx>: >>> On Tue Feb 01, 2011 at 09:12:11PM -0200, Roberto Spadim wrote: >>> >>>> but the best algorithm is time based (minimize time to access data) >>>> >>> And what do you think takes the time accessing the data? In a rotating >>> disk, it's moving the heads - that's why the current strategy is nearest >>> head. In an SSD there's no head movement, so access time should be the >>> same for accessing any data, making it pretty much irrelevant which >>> strategy is used. >>> >>> Cheers, >>> Robin >>> >> >> >> >> -- >> Roberto Spadim >> Spadim Technology / SPAEmpresarial >> > > > > -- > Roberto Spadim > Spadim Technology / SPAEmpresarial > -- Roberto Spadim Spadim Technology / SPAEmpresarial -- To unsubscribe from this list: send the line "unsubscribe linux-raid" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html