Following a thread in linux-pm (https://marc.info/?l=linux-mm&m=157012300901871) I have some issues that may be of general interest.
1. To the best of my knowledge, Linux hibernation is guaranteed to fail if more than 1/2 of total RAM is in use (for instance, by anonymous pages). My knowledge is based on evidence, experiments, code inspection, the thread above, and a comment in Documentation/swsusp.txt, copied here: "Instead, we load the image into unused memory and then atomically copy it back to it original location. This implies, of course, a maximum image size of half the amount of memory." 2. There's no simple/general workaround. Rafael suggested on the thread "Whatever doesn't fit into 50% of RAM needs to be swapped out before hibernation". This is a good suggestion: I am actually close to achieving this using memcgroups, but it's a fair amount of work, and a fairly special case. Not everybody uses memcgroups, and I don't know of other reliable ways of forcing swap from user level. 3. A feature that works only when 1/2 of total RAM can be allocated is, in my opinion, not usable, except possibly under special circumstances, such as mine. Most of the available articles and documentation do not mention this important fact (but for the excerpt I mentioned, which is not in a prominent position). Two questions then: A. Should the documentation be changed to reflect this fact more clearly? I feel that the current situation is a disservice to the user community. B. Would it be worthwhile to improve the hibernation code to remove this limitation? Is this of interest to anybody (other than me)? Thank you in advance!

