2020-01-10 04:15:17 UTC - Ali Tariq: Hi @Rodric Rabbah, i further ran the same setup and saw a weird result i can not explain. I have a total `container memory pool` of 1000. I set the `actionInvokesConcurrent` to 11000 - which means if we send a very big load, at any point the system can at have 1000 actions running and 10000 actions queued up at the very least (please let me know if there is a flaw in my understanding) - queuing can be more than 10k though. In the experiment, i send `100 requests` every second for 1000s & each function runs for 15 seconds. So, at a stable rate, i am sending approximately 33 extra requests than what my `container pool` can handle. {1000/15 = 66.66 requests, will provide a stable 1000 concurrency limit }. This means that the queue keeps increasing at 33 requests per second. After 550s, we see a big drop, as if the whole queue (& all the queued requests) got dropped. At the time of big dip, the queue length must be approximately 18k. Can you think of a reason why this could be happening? In standard case, if the queue becomes full, it should just drop the new arriving requests but still keep servicing the queued requests!- hence there shouldn't be this big dip. I should also mention, in total- i sent 100k requests and about 80k finished successfully which roughly translates to the queue size (~18k) be dropped completely. https://openwhisk-team.slack.com/archives/C3TPCAQG1/p1578629717028900?thread_ts=1578504210.020500&cid=C3TPCAQG1 ---- 2020-01-10 09:15:22 UTC - Ali Tariq: Hi guys, i have a question regarding the action container allocation policy in Openwhisk. Generally, i would expect a bin filling policy - where new action containers are always created as long as there is unallocated `container memory pool` remaining. Only after that, it should start destroying the in-memory containers to make new ones. For example, if i have a `container memory pool` of 200. i run 80 `actionA` followed by 80 `actionB`, the container pool should have 80 containers of `actionA` & `actionB` each in-memory(warm containers). If i then invoke 80 `actionC` , since only 40 can be created from existing `container pool` , 40 existing warm containers (`actionA` or `actionB` ) will be destroyed to make new `actionC` containers. This behavior is consistent with `docker-compose` deployment of OpenWhisk (i tested the above example and the results were consistent). But on `kube-deploy` Openwhisk, it starts destroying in-memory containers even before it exhausts the `container memory pool` . For example, my setup contains a `container memory pool` of 1000. I invoked 400 `actionA` and after they finished execution i checked- there were 400 warm pods for `actionA` in-memory. Then i invoked 400 `actionB` and again after successful execution, checked the in-memory state. There were 400 `actionB` pods but only 247 `actionA` pods. Why does it start destroying pods before it is required? and is there a way to make it behave like the above bin-filling policy from `docker-compose` deployment? https://openwhisk-team.slack.com/archives/C3TPCAQG1/p1578647722045200?thread_ts=1578647722.045200&cid=C3TPCAQG1 ---- 2020-01-10 10:44:51 UTC - Michele Sciabarra: @chetanm @Markus Thömmes @Rodric Rabbah can you review my latest fixes for the standalone openwhisk docker image? https://openwhisk-team.slack.com/archives/C3TPCAQG1/p1578653091046800 ---- 2020-01-10 11:49:41 UTC - Michele Sciabarra: The build for the openwhisk standalone runtime failed for this reason ```size of tarball /tmp/tmp_Ka6wx.tar.gz is 1.1 MB SHA256 hash of tarball is c1f9139dd938b7df2582329982505aef0194e28fe27ec2dc5bdc626464c52437 Uploading to Box... Posting result <Response [500]> { "error": "File upload failed." }``` <https://travis-ci.org/apache/openwhisk/jobs/635198503?utm_medium=notification&utm_source=github_status> any idea? https://openwhisk-team.slack.com/archives/C3TPCAQG1/p1578656981047900?thread_ts=1578656981.047900&cid=C3TPCAQG1 ---- 2020-01-10 12:07:04 UTC - Daniel Varsanyi: Hi! I have a rather weird use case. I'd like to run arbitrary functions that are created dynamically. Therefore the same function would rarely get called. Is openwhisk suitable for this task? The container pre-warming and code injection into containers would be super useful to me, but I wouldn't want to store the functions.. https://openwhisk-team.slack.com/archives/C3TPCAQG1/p1578658024052800?thread_ts=1578658024.052800&cid=C3TPCAQG1 ---- 2020-01-10 13:05:32 UTC - Rodric Rabbah: would you be ok with storing the code temporarily say in an object store of your own and providing a signed url to the code?
or do you want to submit inline code (how big is the the code?) https://openwhisk-team.slack.com/archives/C3TPCAQG1/p1578661532052900?thread_ts=1578658024.052800&cid=C3TPCAQG1 ---- 2020-01-10 13:06:05 UTC - Rodric Rabbah: you can run network accessible functions without storing them - you can try this for example <https://js.nimbella.io/github/apache/incubator-openwhisk/master/tests/dat/actions/echo.js> https://openwhisk-team.slack.com/archives/C3TPCAQG1/p1578661565053100?thread_ts=1578658024.052800&cid=C3TPCAQG1 ---- 2020-01-10 13:26:10 UTC - Daniel Varsanyi: We're evaluating options for a solution HR can use to test candidates. So we would have the function signatures and we would inject the candidates code and then inject the whole thing into some isolated environment (preferably a container of some sort), where it can be executed safely. Storing the code temporarily could work, if there's no way around that. I must admit I don't quite get the network accessible function. https://openwhisk-team.slack.com/archives/C3TPCAQG1/p1578662770053300?thread_ts=1578658024.052800&cid=C3TPCAQG1 ---- 2020-01-10 13:29:33 UTC - Rodric Rabbah: you can create a function from the candidate code, run it, then delete the function - that would be simplest if you’re willing to store the code temporarily somewhere just not in the openwhisk database, then you can provide a url to the code (network accessible) and have a runner fetch the code and run it (as in the example above) https://openwhisk-team.slack.com/archives/C3TPCAQG1/p1578662973053500?thread_ts=1578658024.052800&cid=C3TPCAQG1 ---- 2020-01-10 13:29:52 UTC - Rodric Rabbah: say the candidate code lived on github for example like here <https://github.com/rabbah/functions/blob/master/resize-url.js> https://openwhisk-team.slack.com/archives/C3TPCAQG1/p1578662992053700?thread_ts=1578658024.052800&cid=C3TPCAQG1 ---- 2020-01-10 13:30:13 UTC - Rodric Rabbah: you can run that code straight out of github like this https://openwhisk-team.slack.com/archives/C3TPCAQG1/p1578663013053900?thread_ts=1578658024.052800&cid=C3TPCAQG1 ---- 2020-01-10 13:30:21 UTC - Rodric Rabbah: ```<https://js.nimbella.io/github.com/rabbah/functions/blob/master/resize-url.js?url=https://images.pexels.com/photos/45201/kitty-cat-kitten-pet-45201.jpeg>``` https://openwhisk-team.slack.com/archives/C3TPCAQG1/p1578663021054100?thread_ts=1578658024.052800&cid=C3TPCAQG1 ---- 2020-01-10 13:30:42 UTC - Rodric Rabbah: where the path to the file on github is passed to the function and then any parameters as `?query` in this case https://openwhisk-team.slack.com/archives/C3TPCAQG1/p1578663042054300?thread_ts=1578658024.052800&cid=C3TPCAQG1 ---- 2020-01-10 13:31:32 UTC - Daniel Varsanyi: I see. That was very helpful, thank you! https://openwhisk-team.slack.com/archives/C3TPCAQG1/p1578663092054500?thread_ts=1578658024.052800&cid=C3TPCAQG1 ---- 2020-01-10 13:31:38 UTC - Rodric Rabbah: yw https://openwhisk-team.slack.com/archives/C3TPCAQG1/p1578663098054700?thread_ts=1578658024.052800&cid=C3TPCAQG1 ---- 2020-01-10 14:31:36 UTC - Dave Grove: The build actually failed because a test failed: <https://travis-ci.org/apache/openwhisk/jobs/635198503#L7788> https://openwhisk-team.slack.com/archives/C3TPCAQG1/p1578666696054900?thread_ts=1578656981.047900&cid=C3TPCAQG1 ---- 2020-01-10 14:32:27 UTC - Dave Grove: Box upload has been broken for a month or so because our box folder is full. @Rodric Rabbah is looking into it. But the script is setup so that log upload failing is a non-fatal error https://openwhisk-team.slack.com/archives/C3TPCAQG1/p1578666747055200?thread_ts=1578656981.047900&cid=C3TPCAQG1 ---- 2020-01-10 17:56:28 UTC - Michele Sciabarra: I removed the “upload” of the new openwhisk/standalone and now it is green https://openwhisk-team.slack.com/archives/C3TPCAQG1/p1578678988055600?thread_ts=1578656981.047900&cid=C3TPCAQG1 ---- 2020-01-10 17:56:29 UTC - Michele Sciabarra: I guess there is something to do to have a new image upload - maybe creating it in the first place on docker ub? https://openwhisk-team.slack.com/archives/C3TPCAQG1/p1578678989055800?thread_ts=1578656981.047900&cid=C3TPCAQG1 ---- 2020-01-10 17:56:29 UTC - Michele Sciabarra: maybe you have to create the image in dockerhub in the first place before uploading? https://openwhisk-team.slack.com/archives/C3TPCAQG1/p1578678989056000?thread_ts=1578656981.047900&cid=C3TPCAQG1 ---- 2020-01-10 20:57:50 UTC - Ali Tariq: On the same note, it seems like Openwhisk scheduler is not completely aware of the in-memory state. If i invoke 400 `actionA` from a fresh start (there are no in-memory pods), i get to see 400 `actionA` pods in openwhisk-namespace. If i redo 400 more invocations of the same `actionA` , instead of reusing all the existing in-memory pods - it creates a bunch of new ones! (after seconds run, i have 600 `actionA` pods). Shouldn't it try to re-use the warm pods before creating new ones? https://openwhisk-team.slack.com/archives/C3TPCAQG1/p1578689870056200?thread_ts=1578647722.045200&cid=C3TPCAQG1 ---- 2020-01-10 21:56:58 UTC - Bilal: Quick question, I've read in an article <https://medium.com/openwhisk/squeezing-the-milliseconds-how-to-make-serverless-platforms-blazing-fast-aea0e9951bd0> about pre-warmed containers, is this still the case or configurable at all? Can I choose which kinds/runtimes are prewarmed? https://openwhisk-team.slack.com/archives/C3TPCAQG1/p1578693418057200?thread_ts=1578693418.057200&cid=C3TPCAQG1 ---- 2020-01-10 22:18:02 UTC - Rodric Rabbah: yes, it’s done at deployment time by amending the runtimes manifest https://openwhisk-team.slack.com/archives/C3TPCAQG1/p1578694682057700?thread_ts=1578693418.057200&cid=C3TPCAQG1 ---- 2020-01-10 22:18:02 UTC - Rodric Rabbah: <https://github.com/apache/openwhisk/blob/662da835c9f0a6dd3b45d9ffd0f48fe45f5d1e08/ansible/files/runtimes.json#L58-L63> https://openwhisk-team.slack.com/archives/C3TPCAQG1/p1578694682057900?thread_ts=1578693418.057200&cid=C3TPCAQG1 ---- 2020-01-10 22:27:14 UTC - Bilal: Thanks, so I could basically add that stemCells block to the python3 kind and always have 2 prewarmed python3 runtimes? I'm enjoying learning/working with openwhisk a lot, although it is quite a bit to wrap my head around. We are very close to using in production to ease certain workloads. https://openwhisk-team.slack.com/archives/C3TPCAQG1/p1578695234058100?thread_ts=1578693418.057200&cid=C3TPCAQG1 ---- 2020-01-10 22:27:47 UTC - Rodric Rabbah: excellent to hear - yes that’s all it would take +1 : Bilal https://openwhisk-team.slack.com/archives/C3TPCAQG1/p1578695267058300?thread_ts=1578693418.057200&cid=C3TPCAQG1 ---- 2020-01-10 22:28:27 UTC - Rodric Rabbah: consider contributing your logo to the website? <https://openwhisk.apache.org/community.html> https://openwhisk-team.slack.com/archives/C3TPCAQG1/p1578695307058600?thread_ts=1578693418.057200&cid=C3TPCAQG1 ---- 2020-01-10 22:29:07 UTC - Bilal: I will pass it along upstream. https://openwhisk-team.slack.com/archives/C3TPCAQG1/p1578695347058800?thread_ts=1578693418.057200&cid=C3TPCAQG1 ----