Home > program > disk-refresh - (untested) Multithreaded disk-refresher for dc, System Admins, advanced home and business use.

disk-refresh - (untested) Multithreaded disk-refresher for dc, System Admins, advanced home and business use.

Price

Your Price:
$500.00

Availability:

In Stock.

Part Number:disk-refresh

add UNC's

add ranges of PhysicalDisk (if still supported by Windows)

specify files with ranges of PhysicalDisk or UNCs

specify for max number of threads percent available, specific number of threads, or full thread count

specify stack size per thread (for smaller machines)

specify UNC prefix, suffix, sleep time between job stoppings, sleep time between jobs, wait time for job to complete

specify bad sector file basename, in or out.

show config

specify buffer_length_sector_count

estimates RAM usage

does not use thread-per-disk, uses the maximum threads specified, unless disk count is less

also works also in 1-thread-mode, with caveats about not using ctrl-c.

can read and generate bad blocks list

mostly windows, semi-cross-platform code

Lots of options

efficient use of threads

WARNING! make sure you do not upgrade in-place. this will re-create the include file templates that are needed for your server. extract to a separate tree from your main source and winmerge the files, or find a tree merge tool that works for you. there are some for pay.

works in 1-processor mode as well, but it is unsafe with -rw with current OS's because SIGNALs are not queued

#if defined(ATT), #if defined(__DJGPP__), #if defined(HPUX) are included in program. Don't know what to put in there, but it's included.

OS-Specific chunks of code go into #included files, in which are WIN32 versions of code, for ATT, HPUX, DJGPP

Current VC++ community edition and mingw-w64 are not working, so I provide source, but cannot provide working executables. Even old versions of mingw-w64 do not work. it's been that bad for years.Price is per corporation/group/business/org/church/parachurch ministry/developer/user.

BUGS:A current OS bug that requires a right-now handling of ctrl-c and ctrl-break is preventing the break handler from cleaning up, and is actually terminating the program prematurely in single-thread mode, probably causing memory leaks and premature termination of the main thread in -rw mode in single-thread mode and thus the job's write of buffer data can be left unwritten (a ctrl-c can do that), which in the middle of -rw mode. That is an OS implementation failure. The solution to this problem is for the OS to queue up SIGNALs like SIGHUP and SIGTERM and cause them to wait until the handler is ready to handle them, even if output is coming out. sometimes output is used for a termination excuse regardless. A NULL should not allow breakage of the program.have a queue of SIGNALs to the process. when break handler is set for NULL, do not call callback function. when break handler is set again to A function, call the callback with the first signal in the queue.This information is free.

"This program:"<<std::endl<< "- uses approximately 50% processor usage per thread."<<std::endl<< "- refreshes disks by reading a sector, locking the sector, writing 0x55 then 0xaa, then writing the sector data back. read verification is done at every write and data is restored."<<std::endl<< "- bad block detection. if a read or write fails, or doesn't match the original data value, it is listed as bad."<<std::endl<< "- reads and/or writes bad sector list files, one per line in *nix format. reading a bad sector list will cause the program to list those sectors as bad without processing."<<std::endl<< "- defaults to -ro (readonly)."<<std::endl<< "- the memory allocated is (-buffer-size-in-sectors*16384MaxSectorSize)+(-buffer-size-in-sectors*2*16384MaxSectorSize + sizeof(SDiskJob="<<sizeof(SDiskJob)<<") -thread-stack-size)*numThreadsUsed."<<std::endl<< "A read-only mode may be sufficient to lock out most bad blocks, but with -ro-set-bad-blocks it is quantized to -bl, but a read-write is far more accurate. for example, a readonly pass of /tmp's physical disk(s) should work to produce a badblocks list but it is quantized to -bl."<<std::endl<< "Analyze your system for optimization for: "<<std::endl<< "- heat output (can your building space handle it?)"<<std::endl<< "- CPU usage on disk I/O 50% except for main thread which gets 100%"<<std::endl<< "- RAM usage"<<std::endl<< "- physical cabinet jerk-back (inertia) once stopped or started, if any"<<std::endl<< "\tthen make a script or batch file to do the work."<<std::endl<< "\tstart small or medium for test might be a good idea."<<std::endl; std::cout<< "WARNINGS:"<<std::endl<< "- -rw with sequential mode (1 processor/thread) does not handle ctrl-c or ctrl-break well, and will likely have data loss because ctrl-c is not queued!"<<std::endl<< "- -ro with -ro-set-bad-blocks mode is not recommended for disks with increasing bad blocks (dying) because bad blocks are quantized/chunked up to -buffer-size-in-sectors = "<<bufferLengthSectorCount<<" sectors at each error (if one byte is bad, whole chunk is bad). alternative is to just flag an error. -ro does that."<<std::endl<< "- DO NOT run this program on SSD's with -rw! it shortens the disks's lifespan."<<std::endl<< "- DO NOT run this program on the system disk with -rw unless this is on an embedded OS cdrom and you can acess the disks offline from there."<<std::endl<< "- This program will attempt to offline and lock the disks during -rw usage. this MIGHT be find for data disks, but not OK for system disks unless " PROGRAM_NAME " is on a cdrom with an embedded OS."<<std::endl<< "- disks seem to be a 50% cpu task. so theoretically, "<<std::endl<< "\tfor a properly-cooled and max-cpu-usage-percent scaled 2-available-thread box, you should be able to handle 4 disk threads, not including what the OS needs for threads. The OS may still slow down for anything larger than the actual total number cpu threads."<<std::endl<< "\tfor higher-end machines, you might expect lesser CPU percent usage per processor."<<std::endl<< "\tnot excluding the OS threads is not recommended, since this might leave out the ability to write needful stuff to disk like logs and bad blocks lists."<<std::endl; std::cout<< "Analyze this program's settings and your cabinets for optimization:"<<std::endl<< "- heat output (can your building space handle it?)"<<std::endl<< "- CPU usage 50% except for main thread which gets 100%"<<std::endl<< "- RAM usage"<<std::endl<< "- physical cabinet jerk-back (inertia) once stopped or started, if any, which can be taken care of by -stbjs"<<std::endl<< "Examples:"<<std::endl<< PROGRAM_NAME " -njp 5 -ro -disk-number-list 0-200 401 300-400 (assuming 8 processors, reserving 3, readonly mode)"<<std::endl<< PROGRAM_NAME " -rp 5 -ro -disk-number-list 0-200 401 300-400 file=disk-number-list-file (assuming 8 processors, reserving 3, readonly mode)"<<std::endl<< PROGRAM_NAME " -rp 5 -ro -disk-unc-list file=disk-unc-list-file (assuming 8 processors, reserving 3, readonly mode)"<<std::endl<< "God's idea, Jim Michaels editor"<<std::endl;}

Browse Similar Items

Links

1-360-209-5351 USA 8am-5pm Pacific (NW) time (GMT-8). Calls related to this web site and some support only. This is a 1-man show.Check with your credit card vendor first on large purchases to make sure your credit limit is compatible with the purchase if there might be cause for concern. Business credit cards you should check with your manager to see what its credit limit is AND how much you are allowed to spend, since it's his budget and your salary (make sure your project can handle the purchase by asking first).