A computing system comprising: one or more processors; and one or more computer-readable media having stored thereon instructions that are executable by the one or more processors to configure the computing system to hibernate, including instructions that are executable to configure the computing system to: detect at least one condition which includes a non-volatile storage type information, wherein the non-volatile storage type information is used to infer at least one of I/O access speed and relative cost of random I/O reads to contiguous reads; detect that the computing system comprises non-volatile storage media which does not penalize disk seeks, wherein the non-volatile storage media comprises a pagefile and a hibernate file; detect a trigger indicating that the computing system is to be put into a hibernate state; and as a result of detecting that the computing system comprises non-volatile storage media which does not penalize disk seeks and the trigger, perform hibernation to hibernate the computing system in a way that optimizes resume time from hibernate of the computing system, by determining portions of the state in a memory to be stored in the pagefile and portions of the state in a memory to be stored in the hibernate file. one or more processors; and one or more computer-readable media having stored thereon instructions that are executable by the one or more processors to configure the computing system to hibernate, including instructions that are executable to configure the computing system to: detect at least one condition which includes a non-volatile storage type information, wherein the non-volatile storage type information is used to infer at least one of I/O access speed and relative cost of random I/O reads to contiguous reads; detect that the computing system comprises non-volatile storage media which does not penalize disk seeks, wherein the non-volatile storage media comprises a pagefile and a hibernate file; detect a trigger indicating that the computing system is to be put into a hibernate state; and as a result of detecting that the computing system comprises non-volatile storage media which does not penalize disk seeks and the trigger, perform hibernation to hibernate the computing system in a way that optimizes resume time from hibernate of the computing system, by determining portions of the state in a memory to be stored in the pagefile and portions of the state in a memory to be stored in the hibernate file. detect at least one condition which includes a non-volatile storage type information, wherein the non-volatile storage type information is used to infer at least one of I/O access speed and relative cost of random I/O reads to contiguous reads; detect that the computing system comprises non-volatile storage media which does not penalize disk seeks, wherein the non-volatile storage media comprises a pagefile and a hibernate file; detect a trigger indicating that the computing system is to be put into a hibernate state; and as a result of detecting that the computing system comprises non-volatile storage media which does not penalize disk seeks and the trigger, perform hibernation to hibernate the computing system in a way that optimizes resume time from hibernate of the computing system, by determining portions of the state in a memory to be stored in the pagefile and portions of the state in a memory to be stored in the hibernate file.