Giter Club home page Giter Club logo

dhorse2 / taylordo Goto Github PK

View Code? Open in Web Editor NEW
6.0 6.0 1.0 483.09 MB

(beta, almost ready) An advanced script library using MyDefrag designed to speed up applications performance and provide an improved user experience. Batch command and proprietary script components. Increase performance while reducing drive wear.

Batchfile 33.77% NSIS 22.12% Gherkin 0.03% C# 2.67% C 15.03% HTML 15.29% CSS 11.08%
defrag education greentech hdd-benchmark optimization windows-10

taylordo's People

Contributors

dhorse2 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

barionleg

taylordo's Issues

No Source Code for scripts. Coding practices.

WARNING: I you want to make extensive changes and can't manually walk through code and are err... debugger reliant? you will have difficulty making modifications.
You certainly want to use an Agile or Rad methodology or more plainly, test it after each change.
It's easy to modify if you stick to this practice.

Mainly people would want to change the order of the zones or the placement of the MFT (master file table) / Dir zone group.
The Dir group it the directories without their contents. It is recommended that this be next to the MFT.

Regarding debugging:
Mydefrag writes the script to the MyDefrag.debuglog file (found in the MyDefrag installation directory) only if it contains errors. You can insert one to get a copy.

Where this can be a problem is that run times are extremely long compared to other apps.
It (normally) doesn't spend this time writing to the disk, it is selecting among millions of items on a per zone basis.
These selects are complex. They each take several minutes and take an order of magnitude longer than disk I/O.

In situations where zones are being reordered or the Gap resized it's a problem.
You can do nightly runs. Importantly, once the run starts you can continue modifying the code.
Although you may be too young to have ever worked with punch cards this will give you a feeling for it.

Patience is you friend. If you enjoy watching grass grow or paint dry you have found your place in the universe here.

Create Volume Scan and Volume Type Select - C#

An additional command set is being added to scan the system for volumes and prompt the user for volume type.

Although this could be implemented primitively (IE Cmd) I think the "Primitive still has powerful abstraction" point has been well established enough. Particularly with Admins that typically would have no problem implementing this feature as a console action (Commands).

Given it's a Windows product I should probably do this in C#. It would provide a starting point generating additional features by outputting scripts from code.

Of course I should consult the user base about this. I did. All one of them.
Self I says... I says Self... you do whatever you darn well want...

The background (called Automatic in MyDefrag) and Task Scheduler feature is more important but this is a dependency of it.

Push current beta version to HERE

Current: Vs 0.3.2 - Task:

  • Add Gap and Sort mode control.
  • State Save Restore.
  • Create Daily Fast mode (move up to zone) (vs Regular).
  • Refactor directories.
  • Add related Commands (cmd).
  • Reorganize Zone placements (Mft & Dirs).
  • Debug log has no output.
  • Debug date, time and elp not updating.
  • Experiment with SkipBlock and SkipFiles settings.
  • Determine System Files Cleaning, create Commands.

Create Active Volume Type Management and ALL scripts.

Currently the system has one each of System, Development, Data and Archive.
They could do all volumes of that type but I don't think this is very intuitive to clients.
A System->Volume List->Volume Types definition is standard.

Create ActioniVerb Abstraction and Commands

Status: Testing. Working quite well.

Problem: There was no run time ability to alter which component gets selected. In the case of deeply nested zone processing, zone sorting order was fixed. Daily defrag was using way too much resources and a negative overall. Which was okay but not ideal. There are use cases needing daily optimization.

Solution: There are two zone groups. (Os + Programs) and User. The ability to skip past the former is helpful.
Each Zone now has a sort command for Fast vs Regular processing plus FastBoot (skip OS&Progs).

There are now specific commands also setting Gap Vacate.
An additional feature to save your current settings while allowing Daily (or Archive) runs to make temporary changes to is important.
Added a reset and misc other commands.

Re the Daily. Specifically it makes us of a move up to zone which clear zone specific free space without high impact.

Scripts not logging

Currently AppendLogfile and Writelogfile are not producting any output. They do in a toy test but never have on production (large) ones.

Create a System Clean muti-step process

When your disk is a mess this really helps.
Remembering the several steps and doing them is repetitive.
Things like pagefile, hyberfile, sys vol info, unmovable files, etc.
Status: In progress. I gotta draft.

Internationalize UI

  1. Review existing text blocks and complete this.
  2. Create a branch for a text phrase version.
  3. Locate and obtain translations. They exist.
  4. Create a test translation.
  5. Locate interested parties.

This is what occurs to me now. It is not a trivial task and needs its own issue.

Any concerns and issues regarding the dedication page for Matt

Feedback says landing on the dedication page with all the Githubby stuff is confusing. There were 2 results.

Here: Add more detail to the product description at the top.
Move the QuickStart link to the top.

New: Implement Git Pages.
This is where the download buttons can go but they can also go in the readme.

Volume full overwrite to low disk

The Gap settings are wrong and push zone 20 (archive) past the end of the disk. It fills vacated low space with this data. Uber bad for performance.

DIsplay - ZoneDoActioin for each zone in ZoneStatisticsReport

This requires an addition here:

..MdmDefrag\TaylorDOVs0_3\src\Zone\ZoneTypeDefrag

To each of the zones. IE:
DefragZoneTypeIdeScripts.MyDc

The block of coce:
SetVariable(ZoneLabel, "!ZoneLabelIdeScripts!")
SetVariable(ZoneDescription, "!ZoneDescriptionIdeScripts!")
SetVariable(ZoneVolRoundUp, "!ZoneVolRoundUpIdeScripts!")
SetVariable(ZoneGapSize, "!ZoneGapSizeIdeScripts!")

For standard / regular zones add:
SetVariable(ZoneDoAction, '!include "..\ActionVerbs\ZoneDoActionTypeAll.MyDc"!')

For specialized zones (such a blobs) add:
SetVariable(ZoneDoAction, '!include "..\ActionVerbs\ZoneDoActionTypeBlobs.MyDc"!')

Create shortcuts in NSIS install.

This is in progress. Currently an explorer view of the folders containing the commands will be used.
Subsequently individual commands by task period could be created.
It is currently not stable enough to proceed until all the action verbs and state change commands are done.

Maintain state for Yearly (first), Monthly, Weekly and Daily runs

See Writelog issue. The task scheduler could be set up without it (seemingly) hover it would be useful to progress from initial run to normal operations.
Making major changes to a volume (a Reorganize) effectively is resetting the volume to a First Run state.
Basically I don't want the Regular scripts running until after one successful Yearly (First) Run.

The task scheduler is fully capable handling restart and shutdown issues but I don't think it can disable itself after one successful run.

Create ActioniVerb Abstraction and Commands for FULL (vs Regular and Fast)

First, I think renaming Yearly (or FirstTime) to Full might be a good idea.
All 3 use cases apply but Full entails Yearly and FirstTime and doesn't imply an specific periodic use. IE you might run a Full defrag at anytime, such as after maintenance or significant changes to disk.

Most of the testing and analysis during Nov 2022 was entirely focused on reducing drive wear and run times.
The Daily Fast option addressed this quite well with the exception of Blobs and ArchivesBu.
Due to the tendency of large file to fragment, it consistently tries to reprocess these items regardless of SkipFile/SkipBlock settings.

While it does make progress consolidating these items this causes a great deal of drive activity.
It not only greatly adds to run time it is needlessly wearing the drive out. Uber undesirable.

This Full feature is required for the First Time or Yearly scripts for this reason:

  1. MoveUpToZone really means to the zone or above. There is overlapping zones.

  2. Monthly solves this problem by using a high SkipBlock / SkipFile settings.
    However a huge amount of processing occurs in Blobs and ArchrivesBu as the system attempts defragment items progressively with each run. This is undesirable. They may never be accessed or very infrequently.

It's an issue of wear on the drive essentially. Performance is less of an issue on Blobs and ArchivesBu.

For clarity, For Blobs and ArchivesBu:

  • The default is MoveUpToZone.
  • For Monthly use SortByCreationDate with high SkipBlock / SkipFile
  • For Yearly (or FirstTime) use SortByCreationDate with its full sorting feature (no Skip X).

Rewrite and refactor NSIS install.

The install was my first effort using NSIS and will need to support custom pages.
There will be a section later for a standardized set of FOSS benchmark software. IE. BootRacer and similar.
This includes tools for screenshots and later the emailing of logs by the user.
Under evaluation.

All the preamble is to explain it's current rather elaborate structure.

Run permissions must be elevated / trusted

It's normal and desirable to have UAC pop up but the antivirus software (Kaspersky) repeatedly complains.

Each and every script (cmd) has to be given permission. There are treated as individual apps.

Fixed Zone SIze for unstable zones. ZoneSizeMin = ZoneSize[Type] (Minimum Size)

This fixes a limitation in the product where excessive I/O and/or zone movement can occur is a zone's size can fluctuate outside of the tollerances set for the zone.

For example. Where TemporaryFileSize > Zone Roundup / ? || TemporaryFileSize > Zone Gap / ?

There are certain use cases and/or zones that can have large temporary files created. Thus the actual size of the zone can fluctuate wildly at the time of the run.
WinDir can be used to determine (or estimate) the size of the zone.
This information is also available post hoc via the run log zone details. Notably you would have to see if the files in question existed at run time.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.