[LG V20 ROMs, Kernels, Recoveries, & Other Developm] SaintZ93:
Okay guys OBAR now contains its own kernel! So I want to give you a bit of information that may help you to decide how you want to set up it up! I will always keep this post updated with all the latest version release information. Will label dates next to each new update to show what is new!

I/O Scheduler Information - GPU

:

FIOPS - This is an IOPS based I/O scheduler. It will try to distribute IOPS equally among all processes in the system. It's mainly for Flash based storage.

SIO - The Simple I/O scheduler is an extremely simple scheduler, based on noop and deadline, that relies on deadlines to ensure fairness. The algorithm does not do any sorting but basic merging, trying to keep a minimum overhead. It is aimed mainly for aleatory access devices (eg: flash devices).

NOOP - The no-op I/O scheduler is a minimal scheduler that does basic merging and sorting. Its main uses include non-disk based block devices like memory devices, and specialised software or hardware environments that do their own scheduling and require only minimal assistance from the kernel.

DEADLINE - The deadline I/O scheduler is simple and compact. It will provide CSCAN service with FIFO expiration of requests, switching to a new point in the service tree and doing a batch of IO from there in case of expiry.

CFQ - The CFQ I/O scheduler tries to distribute bandwidth equally among all processes in the system. It should provide a fair and low latency working environment, suitable for both desktop and server systems.

BFQ - The BFQ I/O scheduler tries to distribute bandwidth among all processes according to their weights. It aims at distributing the bandwidth as desired, independently of the disk parameters and with any workload. It also tries to guarantee low latency to interactive and soft real-time applications. If compiled built-in (saying Y here), BFQ can be configured to support hierarchical scheduling.

BFQIO - Enable hierarchical scheduling in BFQ, using the cgroups filesystem interface. The name of the subsystem will be bfqio.

ZEN - FCFS, dispatches are back-inserted, deadlines ensure fairness. Should work best with devices where there is no travel delay.

Governor Information - CPU

:

Simple Ondemand - Chooses frequency based on the recent load on the device. Works similar as ONDEMAND governor of CPUFREQ does. A device with Simple-Ondemand should be able to provide busy/total counter values that imply the usage rate. A device may provide tuned values to the governor with data field at devfreq_add_device().

Performance - Sets the frequency at the maximum available frequency. This governor always returns UINT_MAX as frequency so that the DEVFREQ framework returns the highest frequency available at any time.

Powersave - Sets the frequency at the minimum available frequency. This governor always returns 0 as frequency so that the DEVFREQ framework returns the lowest frequency available at any time.

Userspace - Sets the frequency at the user specified one. This governor returns the user configured frequency if there has been an input to /sys/devices/.../power/devfreq_set_freq. Otherwise, the governor does not change the frequnecy given at the initialization.

Blu_active - This allows you to get a full dynamic cpu frequency capable system by simply loading your cpufreq low-level hardware driver, using the 'interactive' governor for latency-sensitive workloads.

Nightmare (NEW 5/15) - This is a PegasusQ modified, less aggressive and more stable. A good compromise between performance and battery. In addition to the SoD is a prevention because it usually does not hotplug.

Darkness (NEW 5/15) - It's based on nightmare but more simple and fast, basic configs but very complex structure. It is an updated nightmare gov and improved stability, so far it is quite stable in tests.

Chill (NEW 5/15) - Use the CPUFreq governor 'chill' as default. This allows you to get a full dynamic frequency capable system by simply loading your cpufreq low-level hardware driver. A conservative based governor that aims to provide more aggressive battery savings while screen is off.

Dance Dance (NEW 5/15) - Based on conservative with some smartass features, it scales accordingly to conservatives laws. So it will start from the bottom, take a load sample, if it's above the upthreshold, ramp up only one speed at a time, and ramp down one at a time. It will automatically cap the off screen speeds to 245Mhz, and if your min freq is higher than 245mhz, it will reset the min to 120mhz while screen is off and restore it upon screen awakening, and still scale accordingly to conservatives laws. So it spends most of its time at lower frequencies. The goal of this is to get the best battery life with decent performance. It is a performance focused governor but also blends with some battery savings.

Adreno Idler Information

:

Enabled - Uses a different calculation method on top of Adreno TZ just for calculating frequency for idle to reduce the wasted power coming from stock Adreno TZ while maintaining high-performance.

Other Information

:

Moved Core Control To Kernel - Moved core control from out-of-tree module into the kernel proper. Core control monitors load on CPUs and controls how many CPUs are available for the system to use at any point in time. This can help save power. Core control can be configured through sysfs interface.

Moved Core Control Trace Events To Scheduler

Added A Knob To Disable The core_ctl (Core Control) - The CPU hotplug tests does not work with core_ctl compiled statically into kernel. Provide an interface to disable the hotplug by core_ctl.

Enabled LZ4 Compression & Added ExFAT Filesystem

Fixed Various Issues

Source Code: https://github.com/SaintZ13/obar_kernel