<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>224798</bug_id>
          
          <creation_ts>2021-04-19 20:05:55 -0700</creation_ts>
          <short_desc>Make sure we don&apos;t exit the GPUProcess too frequently while under memory pressure</short_desc>
          <delta_ts>2021-04-23 02:48:57 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>224829</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>lingcherd_ho</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1752108</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-19 20:05:55 -0700</bug_when>
    <thetext>Make sure we don&apos;t exit the GPUProcess too frequently while under memory pressure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752111</commentid>
    <comment_count>1</comment_count>
      <attachid>426514</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-19 20:11:19 -0700</bug_when>
    <thetext>Created attachment 426514
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752265</commentid>
    <comment_count>2</comment_count>
      <attachid>426514</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-20 08:09:57 -0700</bug_when>
    <thetext>Comment on attachment 426514
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=426514&amp;action=review

&gt; Source/WebKit/GPUProcess/GPUProcess.cpp:136
&gt; +    // To avoid exiting the GPUProcess too aggressively while under memory pressure, we don&apos;t exit if we&apos;ve been running
&gt; +    // for less than 5 seconds. In case of simulated memory pressure, we ignore this rule to avoid generating flakiness
&gt; +    // in our benchmarks and tests.
&gt; +    if ((MonotonicTime::now() - m_creationTime) &lt; 5_s &amp;&amp; !MemoryPressureHandler::singleton().isSimulatingMemoryPressure())
&gt; +        return false;

In cases like this I really like a comment somewhere explaining the choice of 5 seconds. One way to do that is to use a named constant at the top of the file and have the comment there focus on how we selected 5 seconds over other possible values. It’s sort of a &quot;human being taking a pause&quot; constant, I think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752271</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-20 08:45:16 -0700</bug_when>
    <thetext>Committed r276305 (236787@main): &lt;https://commits.webkit.org/236787@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 426514.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752341</commentid>
    <comment_count>4</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-04-20 11:09:13 -0700</bug_when>
    <thetext>If we know that we&apos;re under memory pressure, and we also know that it&apos;s too soon to exit the GPU Process right now, shouldn&apos;t we schedule an exit for a time that would be more appropriate?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752345</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-20 11:20:39 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #4)
&gt; If we know that we&apos;re under memory pressure, and we also know that it&apos;s too
&gt; soon to exit the GPU Process right now, shouldn&apos;t we schedule an exit for a
&gt; time that would be more appropriate?

I think it would be appropriate although probably not critical.

I made this change because when the system is under memory pressure, the GPUProcess would exit very shortly after launch, even though it was about the be useful. If we launch the GPUProcess, then it indicates the WebProcess is about to use it very shortly. When the WebProcess, stops using it, we will already exit the GPUProcess if we are still under memory pressure and this time.

So the proposal to schedule an exit when receiving a memory pressure signal if we&apos;ve just launched seems to be for this scenario:

The GPUProcess launched less than 5 seconds ago, it was used for a very short amount of time by the WebProcess (less than 5 seconds) and we did not exit when the WebProcess stopped using it because we were not under memory pressure and it had been less than 5 seconds. We then receive a memory pressure signal before the 5 seconds deadline and we don&apos;t exit. After the 5 seconds mark, we don&apos;t exit the GPUProcess if we are still under memory pressure, which is a bit unfortunate indeed. To cause the GPUProcess to exit at that point, we&apos;d need either a new memory pressure signal OR a WebProcess would have to use the GPUProcess then stop using it.

I think based on this, I will follow-up and and such a timer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752348</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-20 11:24:00 -0700</bug_when>
    <thetext>*** Bug 224778 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752430</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-20 14:34:20 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #4)
&gt; If we know that we&apos;re under memory pressure, and we also know that it&apos;s too
&gt; soon to exit the GPU Process right now, shouldn&apos;t we schedule an exit for a
&gt; time that would be more appropriate?

Following up to do this in Bug 224829.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1753521</commentid>
    <comment_count>8</comment_count>
    <who name="Ling Ho">lingcherd_ho</who>
    <bug_when>2021-04-23 02:48:57 -0700</bug_when>
    <thetext>rdar://76918236</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426514</attachid>
            <date>2021-04-19 20:11:19 -0700</date>
            <delta_ts>2021-04-20 08:45:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224798-20210419201118.patch</filename>
            <type>text/plain</type>
            <size>4634</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2MjgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDFlNmYxMWJmNzc2Y2E2ZGZkNzgwMzNi
NzA4MGNmYmE2NmY1MDFhMDkuLjNmM2MyYTY4ZDgyYWQ1NTc1YTc3MTcwYzNlODRkMzY3NzYzYjc1
Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDQtMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIHN1cmUgd2UgZG9uJ3QgZXhpdCB0aGUgR1BVUHJv
Y2VzcyB0b28gZnJlcXVlbnRseSB3aGlsZSB1bmRlciBtZW1vcnkgcHJlc3N1cmUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDc5OAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBtZW1iZXIgZnVuY3Rp
b24gdG8gdGhlIE1lbW9yeVByZXNzdXJlSGFuZGxlciB0byBpbmRpY2F0ZSBpZiB3ZSdyZSBjdXJy
ZW50bHkgc2ltdWxhdGluZyBtZW1vcnkKKyAgICAgICAgcHJlc3N1cmUgb3Igbm90LgorCisgICAg
ICAgICogd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5oOgorICAgICAgICAoV1RGOjpNZW1vcnlQ
cmVzc3VyZUhhbmRsZXI6OmlzU2ltdWxhdGluZ01lbW9yeVByZXNzdXJlIGNvbnN0KToKKwogMjAy
MS0wNC0xOSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAgICAg
IEVuYWJsZSAtV3RocmVhZC1zYWZldHksIGFkZCBhdHRyaWJ1dGVzIHRvIGN1c3RvbSBsb2NrIGNs
YXNzZXMsIGFuZCBwcm92aWRlIG1hY3JvcyB0byBkZWNsYXJlIGd1YXJkcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBi
NWYxMjVmZWU5ZTgwMzRkNGYxYmFiOTA4ZTM5NDM4NzU0MzdjOTgyLi5lOTc4NDgyOWI1MTJhZjBj
NzI0MmU5YjI5YjMwYmU0ODZlNTk3ZTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIx
LTA0LTE5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBz
dXJlIHdlIGRvbid0IGV4aXQgdGhlIEdQVVByb2Nlc3MgdG9vIGZyZXF1ZW50bHkgd2hpbGUgdW5k
ZXIgbWVtb3J5IHByZXNzdXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjQ3OTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBXZSd2ZSByZWNlbnRseSBzdGFydGVkIHRvIGV4aXQgdGhlIEdQVVByb2Nlc3Mg
aWYgaWRsZSBhbmQgdW5kZXIgbWVtb3J5IHByZXNzdXJlLCBpbiBvcmRlcgorICAgICAgICB0byBz
YXZlIG1lbW9yeS4gVGhpcyBpcyBncmVhdCBidXQgd2Ugd291bGRuJ3Qgd2FudCB0byByZXBlYXRl
ZGx5IGV4aXQgYW5kIHJlbGF1bmNoIHRoZQorICAgICAgICBHUFVQcm9jZXNzIHdoaWxlIHVuZGVy
IG1lbW9yeSBwcmVzc3VyZSBlaXRoZXIuIFRvIGFkZHJlc3MgdGhpcywgSSBhbSBhZGRpbmcgYSBj
b25kaXRpb24gdG8KKyAgICAgICAgR1BVUHJvY2Vzczo6Y2FuRXhpdFVuZGVyTWVtb3J5UHJlc3N1
cmUoKSB0byBtYWtlIHN1cmUgd2UgZG9uJ3QgZXhpdCB0aGUgR1BVUHJvY2VzcyBpZiBpdCdzCisg
ICAgICAgIGJlZW4gcnVubmluZyBmb3IgbGVzcyB0aGFuIDUgc2Vjb25kcy4KKworICAgICAgICBU
byBhdm9pZCBnZW5lcmF0aW5nIGZsYWtpbmVzcyBpbiBvdXIgYmVuY2htYXJrcyBhbmQgQVBJIHRl
c3RzLCBJIGFtIGRpc2FibGluZyB0aGlzIGNvbmRpdGlvbgorICAgICAgICBpZiB0aGUgbWVtb3J5
IHByZXNzdXJlIGlzIHNpbXVsYXRlZCAodmlhIGBub3RpZnl1dGlsIC1wIG9yZy5XZWJLaXQubG93
TWVtb3J5YCkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVVByb2Nlc3MuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpHUFVQcm9jZXNzOjpjYW5FeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSBjb25zdCk6
CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmg6CisKIDIwMjEtMDQtMTkgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBNb3Rpb25NYXJrJ3MgQ2FudmFz
LUFyY3Mgc3VidGVzdCBpcyBicm9rZW4gaWYgdGhlIEdQVVByb2Nlc3MgaXMgbm90IHlldCBydW5u
aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaCBi
L1NvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5oCmluZGV4IDM1Njg3N2U5ZjBk
MGM2NDNjYmVhY2Q2MTM3Y2ZlZTMyZTk5NGYwYjYuLjA1YTFmZjFhYTExZjcwYzAwY2FmYjE0ZTli
Yzg4NWVhNDgyMGY4ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJl
SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5oCkBA
IC05MSw2ICs5MSw3IEBAIHB1YmxpYzoKICNlbmRpZgogICAgICAgICAgICAgfHwgbV9pc1NpbXVs
YXRpbmdNZW1vcnlQcmVzc3VyZTsKICAgICB9CisgICAgYm9vbCBpc1NpbXVsYXRpbmdNZW1vcnlQ
cmVzc3VyZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTaW11bGF0aW5nTWVtb3J5UHJlc3N1cmU7IH0K
ICAgICB2b2lkIHNldFVuZGVyTWVtb3J5UHJlc3N1cmUoYm9vbCk7CiAKICAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIE1lbW9yeVVzYWdlUG9saWN5IGN1cnJlbnRNZW1vcnlVc2FnZVBvbGlj
eSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuY3Bw
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuY3BwCmluZGV4IDZiZjIzZTE3
ZDI3NGNiMjhmODVjODY3MDczZjViZGMyZTVkZGQxYWIuLjk3MmM4OWY3NTc4MzVhNDBkYWEwMGQz
YTdhMDEzN2Y1NTQxZjE2NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9H
UFVQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5j
cHAKQEAgLTEyOSw2ICsxMjksMTIgQEAgYm9vbCBHUFVQcm9jZXNzOjpzaG91bGRUZXJtaW5hdGUo
KQogYm9vbCBHUFVQcm9jZXNzOjpjYW5FeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpIGNvbnN0CiB7
CiAgICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7CisgICAgLy8gVG8gYXZvaWQgZXhpdGluZyB0
aGUgR1BVUHJvY2VzcyB0b28gYWdncmVzc2l2ZWx5IHdoaWxlIHVuZGVyIG1lbW9yeSBwcmVzc3Vy
ZSwgd2UgZG9uJ3QgZXhpdCBpZiB3ZSd2ZSBiZWVuIHJ1bm5pbmcKKyAgICAvLyBmb3IgbGVzcyB0
aGFuIDUgc2Vjb25kcy4gSW4gY2FzZSBvZiBzaW11bGF0ZWQgbWVtb3J5IHByZXNzdXJlLCB3ZSBp
Z25vcmUgdGhpcyBydWxlIHRvIGF2b2lkIGdlbmVyYXRpbmcgZmxha2luZXNzCisgICAgLy8gaW4g
b3VyIGJlbmNobWFya3MgYW5kIHRlc3RzLgorICAgIGlmICgoTW9ub3RvbmljVGltZTo6bm93KCkg
LSBtX2NyZWF0aW9uVGltZSkgPCA1X3MgJiYgIU1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2luZ2xl
dG9uKCkuaXNTaW11bGF0aW5nTWVtb3J5UHJlc3N1cmUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCiAgICAgZm9yIChhdXRvJiB3ZWJQcm9jZXNzQ29ubmVjdGlvbiA6IG1fd2ViUHJvY2Vzc0Nv
bm5lY3Rpb25zLnZhbHVlcygpKSB7CiAgICAgICAgIGlmICghd2ViUHJvY2Vzc0Nvbm5lY3Rpb24t
PmFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5oIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuaAppbmRleCA0ZGM3NjU0M2U1ZjQ4
OTZlYzVlYmIyZGQ3Mzc1ZmQ5NTkxOWU4MWE1Li4wOTZiYTVlMTgxNmE1NmI1NWU4YmZkZTE3YmZm
ZDc2M2Q3MDY1ZWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJv
Y2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmgKQEAgLTMz
LDYgKzMzLDcgQEAKICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL0Z1
bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5oPgorI2luY2x1
ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogI2lm
IFBMQVRGT1JNKE1BQykKQEAgLTE0OSw2ICsxNTAsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gQ29u
bmVjdGlvbnMgdG8gV2ViUHJvY2Vzc2VzLgogICAgIEhhc2hNYXA8V2ViQ29yZTo6UHJvY2Vzc0lk
ZW50aWZpZXIsIFJlZjxHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzPj4gbV93ZWJQcm9jZXNzQ29u
bmVjdGlvbnM7CisgICAgTW9ub3RvbmljVGltZSBtX2NyZWF0aW9uVGltZSB7IE1vbm90b25pY1Rp
bWU6Om5vdygpIH07CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIHN0cnVjdCBNZWRp
YUNhcHR1cmVBY2Nlc3Mgewo=
</data>

          </attachment>
      

    </bug>

</bugzilla>