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
----