[Nexus 5X Android Development] Punkiderma:
Finally, here there are the GO optimizations. All credits to [MENTION=4132092]equlog[/MENTION] and his Nexus ROM. I'm not responsible for bootloops, bricks and other issues to your devices. I have applied these values myself, on a system that was already flashed, and everything works well.

You have to modify the /system/build.prop file and the /fstab.bullhead file.

BUILD.PROP

Add these lines right after "# end build properties"

# Sets Android Go recommended default values for properties.

# Set lowram options
ro.lmk.critical_upgrade=true
ro.lmk.upgrade_pressure=40
ro.lmk.downgrade_pressure=60
ro.lmk.kill_heaviest_task=false
ro.statsd.enable=true

# set threshold to filter unused apps
pm.dexopt.downgrade_after_inactive_days=10

# set the compiler filter for shared apks to quicken.
# Rationale: speed has a lot of dex code expansion, it uses more ram and space
# compared to quicken. Using quicken for shared APKs on Go devices may save RAM.
# Note that this is a trade-off: here we trade clean pages for dirty pages,
# extra cpu and battery. That's because the quicken files will be jit-ed in all
# the processes that load of shared apk and the code cache is not shared.
# Some notable apps that will be affected by this are gms and chrome.
# b/65591595.
pm.dexopt.shared=quicken

# Default heap sizes. Allow up to 256m for large heaps to make sure a single app
# doesn't take all of the RAM.
dalvik.vm.heapgrowthlimit=128m
dalvik.vm.heapsize=256m
# end of build/make/target/board/go_defaults_common.prop

Then, under "# ADDITIONAL_BUILD_PROPERTIES" you'll find some "dalvik.vm._______" properties. Change the values to the ones below:

dalvik.vm.heapstartsize=8m
dalvik.vm.heaptargetutilization=0.75
dalvik.vm.heapminfree=512k
dalvik.vm.heapmaxfree=8m

and delete "dalvik.vm.heapgrowthlimit=192m" and "dalvik.vm.heapsize=512m" since these two lines are already included in the first block of lines you have added, as you can see by yourself.

FSTAB.BULLHEAD

Basically, delete everything from the file and paste these:

# Android fstab file.
#<src> <mnt_point> <type> <mnt_flags and options> <fs_mgr_flags>
# The filesystem that contains the filesystem checker binary (typically /system) cannot
# specify MF_CHECK, and must come before any filesystems that do specify MF_CHECK

/dev/block/platform/soc.0/f9824900.sdhci/by-name/system /system ext4 ro,barrier=1,inode_readahead_blks=8 wait,first_stage_mount
/dev/block/platform/soc.0/f9824900.sdhci/by-name/vendor /vendor ext4 ro,barrier=1,inode_readahead_blks=8 wait,first_stage_mount
/dev/block/platform/soc.0/f9824900.sdhci/by-name/userdata /data ext4 lazytime,nosuid,nodev,barrier=1,data=ordered,nomblk_io_submit,noauto_da_alloc,inode_readahead_blks=8 wait,check,encryptable=/dev/block/platform/soc.0/f9824900.sdhci/by-name/metadata
/dev/block/platform/soc.0/f9824900.sdhci/by-name/cache /cache ext4 lazytime,nosuid,nodev,barrier=1,data=ordered,nomblk_io_submit,noauto_da_alloc wait,check
/dev/block/platform/soc.0/f9824900.sdhci/by-name/persist /persist ext4 lazytime,nosuid,nodev,barrier=1,data=ordered,nodelalloc,nomblk_io_submit wait,notrim
/dev/block/platform/soc.0/f9824900.sdhci/by-name/modem /firmware vfat ro,shortname=lower,uid=1000,gid=1000,dmask=227,fmask=337,context=u:object_r:firmware_file:s0 wait
/dev/block/platform/soc.0/f9824900.sdhci/by-name/boot /boot emmc defaults defaults
/dev/block/platform/soc.0/f9824900.sdhci/by-name/recovery /recovery emmc defaults defaults
/dev/block/platform/soc.0/f9824900.sdhci/by-name/misc /misc emmc defaults defaults
/dev/block/platform/soc.0/f9824900.sdhci/by-name/modem /radio emmc defaults defaults
/dev/block/platform/soc.0/f9824900.sdhci/by-name/sbl1 /sbl1 emmc defaults defaults
/dev/block/platform/soc.0/f9824900.sdhci/by-name/tz /tz emmc defaults defaults
/dev/block/platform/soc.0/f9824900.sdhci/by-name/rpm /rpm emmc defaults defaults
/dev/block/platform/soc.0/f9824900.sdhci/by-name/sdi /sdi emmc defaults defaults
/dev/block/platform/soc.0/f9824900.sdhci/by-name/aboot /aboot emmc defaults defaults
/dev/block/platform/soc.0/f9824900.sdhci/by-name/imgdata /imgdata emmc defaults defaults
/dev/block/platform/soc.0/f9824900.sdhci/by-name/pmic /pmic emmc defaults defaults
/dev/block/platform/soc.0/f9824900.sdhci/by-name/hyp /hyp emmc defaults defaults
/dev/block/platform/soc.0/f9824900.sdhci/by-name/sec /sec emmc defaults defaults
/dev/block/platform/soc.0/f9824900.sdhci/by-name/keymaster /keymaster emmc defaults defaults
/dev/block/platform/soc.0/f9824900.sdhci/by-name/cmnlib /cmnlib emmc defaults defaults
/dev/block/platform/soc.0/f9824900.sdhci/by-name/persistent /persistent emmc defaults defaults
/devices/soc.0/f9200000.ssusb/f9200000.dwc3/xhci-hcd.0.auto/usb* auto auto defaults voldmanaged=usb:auto
/dev/block/zram0 none swap defaults zramsize=734003200,notrim
/dev/block/platform/soc.0/f9824900.sdhci/by-name/sbl1bak /sbl1bak emmc defaults defaults
/dev/block/platform/soc.0/f9824900.sdhci/by-name/tzbak /tzbak emmc defaults defaults
/dev/block/platform/soc.0/f9824900.sdhci/by-name/rpmbak /rpmbak emmc defaults defaults
/dev/block/platform/soc.0/f9824900.sdhci/by-name/abootbak /abootbak emmc defaults defaults
/dev/block/platform/soc.0/f9824900.sdhci/by-name/pmicbak /pmicbak emmc defaults defaults
/dev/block/platform/soc.0/f9824900.sdhci/by-name/hypbak /hypbak emmc defaults defaults
/dev/block/platform/soc.0/f9824900.sdhci/by-name/keymasterbak /keymasterbak emmc defaults defaults
/dev/block/platform/soc.0/f9824900.sdhci/by-name/cmnlibbak /cmnlibbak emmc defaults defaults

This will bring ZRAM to 768 mb and change other file system mount options. I'm not a dev so I don't know well what, all that I know is that works.

Apart from that, I use a modified by me version of [MENTION=5536696]linckandrea[/MENTION] POP Kernel to which I have added livedisplay support with the GlassCannon governor profile. I put the kernel in the attachments.

With these tweaks, my N5X is as smooth as ever. Sure, there are hiccups, but for me is very usable (it's my main and only phone). Let me know if for you is the same.