| Posted | Nick | Remark | |
|---|---|---|---|
| #openstack-nova - 2018-09-05 | |||
| 19:18:34 | sean-k-mooney | anyway i need to go sleep/pack. talk to everyone tomorrow | |
| 19:19:01 | mgagne | sean-k-mooney: looks like a very cool spec =) | |
| 20:20:08 | openstackgerrit | Matt Riedemann proposed openstack/nova master: Fix evacuate logging https://review.openstack.org/593055 | |
| 20:53:51 | mriedem | UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details | |
| 20:53:51 | mriedem | FutureWarning: ImageMeta(checksum=<?>,container_format=<?>,created_at=<?>,direct_url=<?>,disk_format=<?>,id=<?>,min_disk=<?>,min_ram=<?>,name=<?>,owner=<?>,properties=ImageMetaProps,protected=<?>,size=<?>,status=<?>,tags=<?>,updated_at=<?>,virtual_size=<?>,visibility=<?>) is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input va | |
| 20:53:51 | mriedem | ugh i thought we had squashed this | |
| 20:54:28 | mriedem | i guess an ImageMeta object is certainly not a uuid | |
| 20:58:30 | melwitt | yeah... is it an error in a test or something? why is an ImageMeta object being treated as a UUIDField | |
| 20:59:19 | mriedem | missing mock i think | |
| 21:06:19 | cdent | Is "thin provisioning" of disk mostly a vmware thing, or does it also happen when using some other hypervisor+storage things? | |
| 21:08:16 | dansmith | cdent: other things have it | |
| 21:08:30 | dansmith | not everything amazing is made by vmware. JEEZ | |
| 21:09:04 | dansmith | a unix sparse file is kinda thing provisioning and pre-dates a lot of stuff | |
| 21:09:10 | dansmith | like 3.5" floppies | |
| 21:09:56 | cdent | the reason I ask is I'm wondering how appropriate it is to consider dynamically adjusting allocation_ratio on DISK_GB in that sort of setting: compare actual versus perceived usage | |
| 21:09:57 | dansmith | *thin | |
| 21:10:21 | dansmith | cdent: well, it's not really the same thing | |
| 21:10:24 | dansmith | it's similar | |
| 21:10:29 | cdent | also: dansmith you know I hate everything, so I don't think anything from vmware is amazing | |
| 21:10:39 | dansmith | but technically thin provisioning can blow up in your face if you overcommit | |
| 21:10:47 | cdent | right, that's exactly the issue | |
| 21:10:50 | dansmith | I do know that. | |
| 21:11:22 | dansmith | IMHO, allocation_ratio can only be over 1.0 for disk if you like to gamble | |
| 21:11:34 | dansmith | and shouldn't really be related to use of thin provisioning, | |
| 21:11:42 | dansmith | except in that it may be the mechanism by which you gamble | |
| 21:12:00 | cdent | the nearby concrete problem here is: datastore with 50TB total, allocated to 50TB, but in reality has 41TB free because of "thing provisioning" | |
| 21:12:19 | cdent | so the short term fix is bump allocation_ratio and watch real usage "real close like" | |
| 21:12:19 | dansmith | but yep | |
| 21:12:27 | dansmith | yeah, i.e. gambling | |
| 21:12:33 | cdent | that was not mockery, I just can't type | |
| 21:12:37 | cdent | which you also know | |
| 21:12:50 | dansmith | so, every night before the op goes to sleep, | |
| 21:13:07 | dansmith | he decides how far he thinks he can get before 8am the next morning and sets the allocation_ratio accordingly | |
| 21:13:13 | cdent | pretty much | |
| 21:13:32 | dansmith | solid plan | |
| 21:14:40 | cdent | so the questioning is: if you know what placement thinks about usage, and you know what the datastore thinks of its free space, you ought to be able to calculate a dynamic allocation ratio every now and again, and save that op some sleep | |
| 21:15:12 | dansmith | if your usage is very consistent | |
| 21:15:23 | dansmith | the other thing to think about/remember is: | |
| 21:15:52 | dansmith | thin provisioning is somewhat of a space-saving thing, but it's also just to speed up the actual provisioning step | |
| 21:16:06 | dansmith | most filesystems will end up filling out the block device over time, | |
| 21:16:29 | cdent | yeah, which is why it would need to be a failure regular thing | |
| 21:16:33 | dansmith | unless they intentionally compact and fstrim() now and then to let go of things back to the underlying storage | |
| 21:16:36 | cdent | like maybe every update_provider_tree | |
| 21:17:00 | cdent | that was an awesome freudian slide on my part: meant fairly, but failure works too | |
| 21:17:16 | dansmith | but if you go to sleep with it set at 1.1, | |
| 21:17:29 | dansmith | and something happens where a big tenant has a script that runs amok and fills the disk with logs, | |
| 21:17:37 | dansmith | you could end up getting a page | |
| 21:17:55 | dansmith | so it's still a ticking time bomb, even if you calculate a conservative ratio based on recent history | |
| 21:18:24 | cdent | I'm not sure I'm following that logic: at time 1 we set it to 1.1. a few minutes later the actual usage on the store goes up, so at time 2 we set it to 1.0 | |
| 21:18:48 | cdent | if 1 and 2 are close together the risk is lessed (but not entirely removed) | |
| 21:19:00 | dansmith | you mean some automated thing that looks for the crash on the horizon and adjusts the ratio before it becomes a problem? | |
| 21:21:34 | dansmith | I'm trying to think about how that helps | |
| 21:21:36 | cdent | in this vmware case the datastore knows how many bytes it says it has "free". this is different from what placement says. The ratio of that difference can be a multiplier for setting allocation_ratio. If you're saying "the datastores sense of 'free' is not real" then yeah, sure, we got a problem. | |
| 21:21:46 | dansmith | until you get to 1.0, it might as well be 1.0, and once you're past 1.0 you can't go back | |
| 21:22:10 | dansmith | it's free to the datastore, but it's not "uncommitted" | |
| 21:22:58 | cdent | I think that may be where the vmware stuff is actually doing something "amazing" that is a bit different from sparse files | |
| 21:23:37 | dansmith | the other two things that it can be doing are compression and dedup | |
| 21:23:48 | dansmith | both of which have an optimal ratio, but that aren't consistent | |
| 21:24:23 | dansmith | like, if your users are into storing usenet archives, you might get 1.5x from compression, but if they're archiving "those" usenet articles, it'll be much closer to 1.0x | |
| 21:24:50 | dansmith | and if multiple tenants are storing the same things, then you might get 2x from dedup, but not if they're using different block sizes or encruption | |
| 21:24:55 | dansmith | *encryption | |
| 21:24:57 | dansmith | dang | |
| 21:24:58 | dansmith | you know. | |
| 21:25:10 | cdent | yah, all that makes sense | |
| 21:25:30 | cdent | but the fundamental issue here is 41TB free, but placement says no bytes free | |
| 21:25:33 | cdent | *issue for the customer | |
| 21:25:57 | dansmith | right, I get that | |
| 21:26:06 | dansmith | 41TB is free because 41TB hasn't yet been used, | |
| 21:26:28 | dansmith | but it _is_ committed to some instances | |
| 21:26:29 | dansmith | according to nova and placement | |
| 21:26:48 | cdent | and for many of these flavors, probably never will, because somebody made big flavors, and people like big things even when they don't need them | |
| 21:27:02 | cdent | yes to all that | |
| 21:27:05 | dansmith | you can tell placement to oversubscribe that to converge the two numbers to zero, but the end result will be someone writes a byte to disk and gets an EIO because you lost the bet | |
| 21:27:25 | dansmith | yeah, but again, with disk, it all ends up filling out | |
| 21:27:38 | dansmith | if you have a linux guest with a 1TB disk and 500MB used, | |
| 21:27:45 | dansmith | and you write a 10MB file and then delete it, in a loop, | |
| 21:27:53 | dansmith | you will end up touching all sectors on the disk | |
| 21:28:18 | dansmith | if you're fstrim()'ing then that will tell the underlying disk that you're only using some of those at a time, | |
| 21:28:21 | dansmith | but if you're not, it doesn't know | |
| 21:28:32 | dansmith | now, I'll grant you this: | |
| 21:28:35 | cdent | as I understand things, in the vc situation, the datastore will reject a workload if _it_ thinks it doesn't have enough space to cope | |
| 21:28:49 | cdent | so it's not going to lead to that level of disaster, at least not as quickly | |
| 21:28:59 | dansmith | if the expectation or requirement is that the guest agent is running in all these instances and can ensure that it's trim'ing then you won't converge on full in the same way | |
| 21:29:23 | cdent | the split brain nature of the vc situation, sets up a lot of weird | |
| 21:29:25 | dansmith | based on what logic? | |
| 21:29:36 | cdent | vmware magic? | |
| 21:29:49 | cdent | it's what that stuff does. who knows how it works. | |
| 21:30:07 | dansmith | well, unless you can explain some magic, I don't believe :) | |
| 21:30:16 | cdent | let me see if I can find something | |
| 21:30:49 | mriedem | https://www.youtube.com/watch?v=1-bt81UBDLI ? | |
| 21:34:08 | cdent | hrmm, too many layers of indirection | |
| 21:34:50 | cdent | so: in the general case a fix for this kind of thing is: train people to not use big disk using flavors when they don't need that. use a volume. | |
| 21:35:40 | dansmith | I'm not saying you shouldn't gamble, | |
| 21:35:52 | dansmith | I'm just saying if you do, be sure to let me know so I can move my instances elsewhere :) | |
| 21:36:37 | dansmith | I think most probably do because they're economizing, and they take that risk, mitigated by willingness to throw disks at a growing problem | |
| 21:36:51 | dansmith | if you're going for risk-and-reward, you gamble | |
| 21:37:06 | dansmith | if you're going for "make sure the nukes don't EIO at a bad time" then maybe you don' | |
| 21:37:07 | dansmith | t | |
| 21:38:06 | cdent | aye aye | |
| 21:38:48 | cdent | still querying around for an answer on the "is there magic here" and so far the answer is "it's complicated" | |