ALMs are not a good indicator of usage. Similar to LABs(which are worse), they can be counted as being used if only a single resource is used(say a FF), or if all the combinatorial logic and both flops are used. Because of this, ALMs and LABs will be artificially high. (LAB usage will approach 100% when your design isn't very full). Be sure to look at the fitter report -> Resource Section -> Logic Utilization. This % is the same thing that appears when a compile is done. It takes into account all sorts of things that make it much more accurate, albeit confusing.
Note that there is a lot of flexibility in the ALM architecture. LUTs can share inputs. Registers and combinational cells that are unrelated can be packed together. If you look at things as if they're independent resources, you won't take this into account.