Real-time plotting using matplotlib, huge memory leak and hang

After having some insights from my other thread of plotting different kinds of plots using subplots, I have it all looking good with some serious caveat, huge memory leak and eventually application hang/crash. I am pretty sure there is much better way to implement this figure updating flow and am open for suggestions. Tried blit option which runs fast for about 5-7 iterations and then hangs but still memory usage keeps piling up.

Here is the basic flow, read in a large data set from a spreadsheet, for each row of data, do some process and generate some data sets. Plot these different data sets on multiple different types of plots as shown, this is an example of same thing running in matlab

enter image description here

import tkinter as tk
from tkinter import filedialog
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg

#.. read in the file and load the data ...
# define all plots on a figure
resultsFig = plt.figure(figsize=(12, 6))
resultsFig.show()
# We need to draw the canvas before we start animating...
resultsFig.canvas.draw()
subplot1= resultsFig.add_subplot(311)
subplot1.axis('off')
subplot1.set_title('gaussian')
subplot1.set_anchor('S')
subplot2= resultsFig.add_subplot(312)
subplot2.set_xlabel('Dout')
subplot2.set_ylabel('Ratio')
subplot2.set_anchor('N')
subplot2.set_ylim(0, 0.3)
subplot2.set_xlim(-3.0, 1.5)
subplot2.autoscale(False, tight='True')
subplot3= resultsFig.add_subplot(325, aspect='equal')
subplot3.set_title('ciruclar analysis')
subplot3.set_xlabel('mm (right-left)')
subplot3.set_ylabel('mm (bottom-top)')
subplot3.set_anchor('S')
subplot4= resultsFig.add_subplot(326)
subplot4.set_xlabel('Row#')
subplot4.set_ylabel('Din')
subplot4.set_anchor('S')
subplot4.set_ylim(-4, 4)
subplot4.set_xlim(startRow, endRow)
backgrounds = (resultsFig.canvas.copy_from_bbox(ax.bbox) for ax in (subplot1, subplot2, subplot3, subplot4))
plt.ion()

# go through rows of data from start row to end row
for frame in range(startRow, endRow):
    ......
    # generate datasets for this row for all subplots
    ......
    # Display all plots
    resultsFig.canvas.restore_region(backgrounds(0))
    subplot1.clear()
    subplot1.imshow(dataArray, cmap='gray')
    subplot1.autoscale(False, tight='True')

    resultsFig.canvas.restore_region(backgrounds(1))
    subplot2.clear()
    subplot2.bar(plot2data(:,0), plot2data(:, 1))

    resultsFig.canvas.restore_region(backgrounds(2))
    subplot3.clear()
    cp = subplot3.contourf(axisrange, axisrange, plot3dataMap, np.linspace(-5, 5, 24)) 
    resultsFig.colorbar(cp, ax=subplot3)

    resultsFig.canvas.restore_region(backgrounds(3))
    subplot4.plot(range(startRow, endRow), plot4data(:, 0), color='blue', linewidth=1.0)
    subplot4.plot(range(startRow, endRow), plot4data(:, 1), color='red', linewidth=1.0)

    plt.tight_layout()
    (resultsFig.canvas.blit(ax.bbox) for ax in (subplot1, subplot2, subplot3, subplot4))

All subplots need to be updated for each row of data as you can see above
Subplot1 – uses imshow
Subplot2 – bar plot
Subplot3 – contourf plot
Subplot4 – can be line or scatter plot

Eventually, each figure generated for each row of data needs to saved ideally into a video, but saving as a image is also fine for now

Boot up Ubuntu 20.04.1 hang

The desktop has 64 GBytes of RAM, Intel i9 processor, and 1 TBytes SSD disk.
Install Ubuntu 20.04.1 through USB. Was ask to restart the computer after install. During boot up, it hang and the login prompt never appear.

The same computer, installed Windows 10 on it. Rebooted many times and no issues.

apache2 – Server seems to hang and not respond

I run a certain server and it runs Django under gunicorn, nginx and Apache and a few jobs with rq. Also runs some php scripts ocassionally under cron and such.

At some points in the day, it becomes very unresponsive. ie. it times out when trying to access it via domain on the browser.

Ssh won’t respond either and after a while times out. Verbose just gets to the line where it says
Local version string SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.3 and then that’s it and timeout then comes later.

Any ideas on how to debug this?

Sometimes after a while, a couple of minutes like, 20, it just resolves itself and comes back. But I’ve really never seen this before in my years of admin.

Hi, I’m Ayokunle, still trying to get the hang of beermoneyforum. | Proxies123.com

Earnings Disclaimer:  All the posts published herein are merely based on individual views, and they do not expressly or by implications represent those of Proxies123.com or its owner. It is hereby made clear that Proxies123.com does not endorse, support, adopt or vouch any views, programs and/or business opportunities posted herein. Proxies123.com also does not give and/or offer any investment advice to any members and/or it’s readers. All members and readers are advised to independently consult their own consultants, lawyers and/or families before making any investment and/or business decisions. This forum is merely a place for general discussions. It is hereby agreed by all members and/or readers that Proxies123.com is in no way responsible and/or liable for any damages and/or losses suffered by anyone of you.

MySQL TPS Speed down with process hang on status ‘Update’ or ‘Updating’

I have mysql running with a high concurrency press test.
MySQL can running with around 1000TPS for 15 minutes with 200-400 running thread. Then performance speed down, with process waiting for status ‘update’ or ‘updating’.
I’m not sure what’s the bottle neck.
I increase server from 32 core to 64 core, tps can recover soon but the wave increase.

innodb_buffer_pool_size=63484985344
innodb_logfile_size=1073741824

mysql> insert into xxxx  VALUES );
Query OK, 1 row affected (1.60 sec)


mysql> show profile;
+----------------------+----------+
| Status               | Duration |
+----------------------+----------+
| starting             | 0.000294 |
| checking permissions | 0.000187 |
| Opening tables       | 0.465956 |
| init                 | 0.000248 |
| System lock          | 0.000188 |
| update               | 1.108191 |
| end                  | 0.000226 |
| query end            | 0.023045 |
| closing tables       | 0.000143 |
| freeing items        | 0.000130 |
| logging slow query   | 0.000092 |
| cleaning up          | 0.000101 |
+----------------------+----------+
12 rows in set, 1 warning (0.00 sec)


mysql> show variables like '%thread%';
+-----------------------------------------+---------------------------+
| Variable_name                           | Value                     |
+-----------------------------------------+---------------------------+
| innodb_purge_threads                    | 4                         |
| innodb_read_io_threads                  | 4                         |
| innodb_thread_concurrency               | 0                         |
| innodb_thread_sleep_delay               | 10000                     |
| innodb_write_io_threads                 | 4                         |
| max_delayed_threads                     | 20                        |
| max_insert_delayed_threads              | 20                        |
| myisam_repair_threads                   | 1                         |
| performance_schema_max_thread_classes   | 50                        |
| performance_schema_max_thread_instances | -1                        |
| pseudo_thread_id                        | 4009                      |
| thread_cache_size                       | 20                        |
| thread_handling                         | one-thread-per-connection |
| thread_stack                            | 262144                    |
+-----------------------------------------+---------------------------+
14 rows in set (0.01 sec)

mysql> show status like '%thread%';
+------------------------------------------+-------+
| Variable_name                            | Value |
+------------------------------------------+-------+
| Delayed_insert_threads                   | 0     |
| Performance_schema_thread_classes_lost   | 0     |
| Performance_schema_thread_instances_lost | 0     |
| Slow_launch_threads                      | 0     |
| Threads_cached                           | 0     |
| Threads_connected                        | 981   |
| Threads_created                          | 2570  |
| Threads_running                          | 776   |
+------------------------------------------+-------+

mysql> show engine innodb statusG
  Type: InnoDB
  Name: 
Status: 
=====================================
2020-07-21 10:37:25 0x7f76a084f700 INNODB MONITOR OUTPUT
=====================================
Per second averages calculated from the last 23 seconds
-----------------
BACKGROUND THREAD
-----------------
srv_master_thread loops: 2598 srv_active, 0 srv_shutdown, 321 srv_idle
srv_master_thread log flush and writes: 2919
----------
SEMAPHORES
----------
OS WAIT ARRAY INFO: reservation count 1510324
OS WAIT ARRAY INFO: signal count 189007
RW-shared spins 0, rounds 2013263, OS waits 940261
RW-excl spins 0, rounds 1455935, OS waits 59608
RW-sx spins 68245, rounds 933825, OS waits 17348
Spin rounds per wait: 2013263.00 RW-shared, 1455935.00 RW-excl, 13.68 RW-sx
------------
TRANSACTIONS
------------
--------
FILE I/O
--------
I/O thread 0 state: waiting for completed aio requests (insert buffer thread)
I/O thread 1 state: waiting for completed aio requests (log thread)
I/O thread 2 state: waiting for completed aio requests (read thread)
I/O thread 3 state: waiting for completed aio requests (read thread)
I/O thread 4 state: waiting for completed aio requests (read thread)
I/O thread 5 state: waiting for completed aio requests (read thread)
I/O thread 6 state: waiting for completed aio requests (write thread)
I/O thread 7 state: waiting for completed aio requests (write thread)
I/O thread 8 state: waiting for completed aio requests (write thread)
I/O thread 9 state: waiting for completed aio requests (write thread)
Pending normal aio reads: (0, 0, 0, 0) , aio writes: (0, 0, 0, 1) ,
 ibuf aio reads:, log i/o's:, sync i/o's:
Pending flushes (fsync) log: 1; buffer pool: 0
1804996 OS file reads, 3559474 OS file writes, 764912 OS fsyncs
57.69 reads/s, 16384 avg bytes/read, 1285.34 writes/s, 261.86 fsyncs/s
-------------------------------------
INSERT BUFFER AND ADAPTIVE HASH INDEX
-------------------------------------
Ibuf: size 1, free list len 195, seg size 197, 15932 merges
merged operations:
 insert 15943, delete mark 0, delete 0
discarded operations:
 insert 0, delete mark 0, delete 0
Hash table size 15937451, node heap has 0 buffer(s)
Hash table size 15937451, node heap has 2 buffer(s)
Hash table size 15937451, node heap has 0 buffer(s)
Hash table size 15937451, node heap has 6110 buffer(s)
Hash table size 15937451, node heap has 2 buffer(s)
Hash table size 15937451, node heap has 0 buffer(s)
Hash table size 15937451, node heap has 0 buffer(s)
Hash table size 15937451, node heap has 1 buffer(s)
120.91 hash searches/s, 132928.61 non-hash searches/s
---
LOG
---
Log sequence number 351768984657
Log flushed up to   351768864115
Pages flushed up to 350138451711
Last checkpoint at  350129818797
1 pending log flushes, 0 pending chkp writes
343303 log i/o's done, 114.04 log i/o's/second
----------------------
BUFFER POOL AND MEMORY
----------------------
Total large memory allocated 65965916160
Dictionary memory allocated 489565
Buffer pool size   3932160
Free buffers       2056882
Database pages     1869163
Old database pages 690134
Modified db pages  835959
Pending reads      0
Pending writes: LRU 0, flush list 115, single page 0
Pages made young 5767, not young 0
0.00 youngs/s, 0.00 non-youngs/s
Pages read 1805003, created 64160, written 3147036
0.00 reads/s, 0.00 creates/s, 0.00 writes/s
Buffer pool hit rate 1000 / 1000, young-making rate 0 / 1000 not 0 / 1000
Pages read ahead 0.00/s, evicted without access 0.00/s, Random read ahead 0.00/s
LRU len: 1869163, unzip_LRU len: 0
I/O sum(0):cur(10240), unzip sum(0):cur(0)
----------------------
INDIVIDUAL BUFFER POOL INFO
----------------------
---BUFFER POOL 0
Buffer pool size   491520
Free buffers       249772
Database pages     241003
Old database pages 88983
Modified db pages  108649
Pending reads      0
Pending writes: LRU 0, flush list 16, single page 0
Pages made young 763, not young 0
0.00 youngs/s, 0.00 non-youngs/s
Pages read 229931, created 11072, written 407814
0.00 reads/s, 0.00 creates/s, 0.00 writes/s
Buffer pool hit rate 1000 / 1000, young-making rate 0 / 1000 not 0 / 1000
Pages read ahead 0.00/s, evicted without access 0.00/s, Random read ahead 0.00/s
LRU len: 241003, unzip_LRU len: 0
I/O sum(0):cur(1280), unzip sum(0):cur(0)
---BUFFER POOL 1
Buffer pool size   491520
Free buffers       260138
Database pages     230616
Old database pages 85149
Modified db pages  102854
Pending reads      0
Pending writes: LRU 0, flush list 22, single page 0
Pages made young 672, not young 0
0.00 youngs/s, 0.00 non-youngs/s
Pages read 223588, created 7028, written 387370
0.00 reads/s, 0.00 creates/s, 0.00 writes/s
Buffer pool hit rate 1000 / 1000, young-making rate 0 / 1000 not 0 / 1000
Pages read ahead 0.00/s, evicted without access 0.00/s, Random read ahead 0.00/s
LRU len: 230616, unzip_LRU len: 0
I/O sum(0):cur(1280), unzip sum(0):cur(0)
---BUFFER POOL 2
Buffer pool size   491520
Free buffers       255567
Database pages     235189
Old database pages 86837
Modified db pages  105387
Pending reads      0
Pending writes: LRU 0, flush list 2, single page 0
Pages made young 682, not young 0
0.00 youngs/s, 0.00 non-youngs/s
Pages read 227151, created 8038, written 395391
0.00 reads/s, 0.00 creates/s, 0.00 writes/s
Buffer pool hit rate 1000 / 1000, young-making rate 0 / 1000 not 0 / 1000
Pages read ahead 0.00/s, evicted without access 0.00/s, Random read ahead 0.00/s
LRU len: 235189, unzip_LRU len: 0
I/O sum(0):cur(1280), unzip sum(0):cur(0)
---BUFFER POOL 3
Buffer pool size   491520
Free buffers       254648
Database pages     236103
Old database pages 87172
Modified db pages  106024
Pending reads      0
Pending writes: LRU 0, flush list 19, single page 0
Pages made young 782, not young 0
0.00 youngs/s, 0.00 non-youngs/s
Pages read 229017, created 7086, written 399973
0.00 reads/s, 0.00 creates/s, 0.00 writes/s
Buffer pool hit rate 1000 / 1000, young-making rate 0 / 1000 not 0 / 1000
Pages read ahead 0.00/s, evicted without access 0.00/s, Random read ahead 0.00/s
LRU len: 236103, unzip_LRU len: 0
I/O sum(0):cur(1280), unzip sum(0):cur(0)
---BUFFER POOL 4
Buffer pool size   491520
Free buffers       255294
Database pages     235463
Old database pages 86938
Modified db pages  104936
Pending reads      0
Pending writes: LRU 0, flush list 25, single page 0
Pages made young 733, not young 0
0.00 youngs/s, 0.00 non-youngs/s
Pages read 227515, created 7948, written 395674
0.00 reads/s, 0.00 creates/s, 0.00 writes/s
Buffer pool hit rate 1000 / 1000, young-making rate 0 / 1000 not 0 / 1000
Pages read ahead 0.00/s, evicted without access 0.00/s, Random read ahead 0.00/s
LRU len: 235463, unzip_LRU len: 0
I/O sum(0):cur(1280), unzip sum(0):cur(0)
---BUFFER POOL 5
Buffer pool size   491520
Free buffers       259591
Database pages     231152
Old database pages 85346
Modified db pages  103076
Pending reads      0
Pending writes: LRU 0, flush list 0, single page 0
Pages made young 659, not young 0
0.00 youngs/s, 0.00 non-youngs/s
Pages read 223757, created 7395, written 387267
0.00 reads/s, 0.00 creates/s, 0.00 writes/s
Buffer pool hit rate 1000 / 1000, young-making rate 0 / 1000 not 0 / 1000
Pages read ahead 0.00/s, evicted without access 0.00/s, Random read ahead 0.00/s
LRU len: 231152, unzip_LRU len: 0
I/O sum(0):cur(1280), unzip sum(0):cur(0)
---BUFFER POOL 6
Buffer pool size   491520
Free buffers       261798
Database pages     228952
Old database pages 84535
Modified db pages  102033
Pending reads      0
Pending writes: LRU 0, flush list 0, single page 0
Pages made young 739, not young 0
0.00 youngs/s, 0.00 non-youngs/s
Pages read 220812, created 8140, written 385126
0.00 reads/s, 0.00 creates/s, 0.00 writes/s
Buffer pool hit rate 1000 / 1000, young-making rate 0 / 1000 not 0 / 1000
Pages read ahead 0.00/s, evicted without access 0.00/s, Random read ahead 0.00/s
LRU len: 228952, unzip_LRU len: 0
I/O sum(0):cur(1280), unzip sum(0):cur(0)
---BUFFER POOL 7
Buffer pool size   491520
Free buffers       260074
Database pages     230685
Old database pages 85174
Modified db pages  103000
Pending reads      0
Pending writes: LRU 0, flush list 31, single page 0
Pages made young 737, not young 0
0.00 youngs/s, 0.00 non-youngs/s
Pages read 223232, created 7453, written 388421
0.00 reads/s, 0.00 creates/s, 0.00 writes/s
Buffer pool hit rate 1000 / 1000, young-making rate 0 / 1000 not 0 / 1000
Pages read ahead 0.00/s, evicted without access 0.00/s, Random read ahead 0.00/s
LRU len: 230685, unzip_LRU len: 0
I/O sum(0):cur(1280), unzip sum(0):cur(0)
--------------
ROW OPERATIONS
--------------
0 queries inside InnoDB, 0 queries in queue
3 read views open inside InnoDB
Process ID=9583, Main thread ID=140165664782080, state: sleeping
Number of rows inserted 7015094, updated 3385382, deleted 843385, read 57048694
2508.41 inserts/s, 1217.43 updates/s, 301.94 deletes/s, 20273.21 reads/s
----------------------------
END OF INNODB MONITOR OUTPUT
============================

Are there any digital photo frames that hang in portrait orientation?

If you can find one with two “keyhole” style holes in the back you can mount it vertically (portrait mode) by placing the mounting screws into the wall in the correct orientation and sliding the frame onto the screw heads from the side rather than from above. It will be a little less secure than in the intended landscape mode, but a small piece of double-sided foam tape placed between the frame and the wall near the “bottom” edge of the frame (when in landscape mode) should be enough to hold it in place. Just be sure to keep that edge of the frame tilted slightly away from the wall until the “keyhole” is slid all the way onto the heads of the screws in the wall.

You may also have to manually rotate all of the images on a computer prior to loading them onto the frame, or onto a memory card to be used in the frame. I doubt a frame that is not made specifically to be displayed either way will be able to do it automatically by sensing which way is down.

Having said all of that, it took me all of about 15 seconds to find these Nix photo frames with mounting keyholes for either orientation, offered in four sizes from 8″ to 15″, on amazon.

enter image description here

B&H offers a few similar frames as well, including this 12″ digital picture frame.

enter image description here

No longer than it took me to find these, I would think that they are not that uncommon at all. Be sure to include the word “portrait” in your search.

networking – Apache Intermittant Hang is it Network Lag?

I have an intermittent lag on the web applications I am serving from Apache on a Debian box. Apache and MySQL check out. I am far from fully utilizing the box CPU/Memory. Still there is an intermittent lag. My theory is there is a network rate limit needing to be tweaked. Stats below.

Current Time: Tuesday, 02-Jun-2020 14:36:53 EDT
Restart Time: Monday, 01-Jun-2020 01:00:03 EDT
Parent Server Config. Generation: 1
Parent Server MPM Generation: 0
Server uptime: 1 day 13 hours 36 minutes 50 seconds
Server load: 2.95 3.23 3.09
Total accesses: 1213060 - Total Traffic: 22.0 GB - Total Duration: 32311929295
CPU Usage: u396.94 s164.31 cu2065.15 cs789.27 - 2.52% CPU load
8.96 requests/sec - 170.5 kB/second - 19.0 kB/request - 26636.7 ms/request
296 requests currently being processed, 66 idle workers

WR.WWWW.KWW_W._W_KWWWWWWKWWWWW_WWWWK_WK_WWW_WW_RWWWWWKCWWWWWW._W
_WW_R_W_.__K_WWWW__WWWWWWKKWWWWWWKWWWW_W____WWWWWWWW_WWW_KWWWWWW
WWWWWWWW_.WWWWWK_WWW_WWKWWWWWWKWWKWK_WWWWWRKWWW.WW_KKWKWWWKW_WWW
WW.W_.K._WWWK_WW_K_K._WW..WWWWWWW_.W_WWWW_W_W.W_WWWW_.WWKWK_WKWW
_W_WWWW_W.WWWWWW.WWWW_K__..W.WW_WWWWWWWWKRW_WWW_C.W_KW_WWW_KW.._
..WWWWWWWCWWW.WWW_WKKWWWW_._WWW.....WWW.W_W.W._.KW...W...WWW.WWW
W..W..K..WW_.W._................W..._W.W.....K.W.K_...R..K...W.W
...W..W.............................................
top - 14:31:14 up 79 days, 21:39,  3 users,  load average: 2.26, 2.57, 2.86
Tasks: 717 total,   1 running, 716 sleeping,   0 stopped,   0 zombie
%Cpu(s):  3.3 us,  0.7 sy,  0.2 ni, 95.7 id,  0.0 wa,  0.0 hi,  0.1 si,  0.0 st
MiB Mem :  64365.1 total,    539.8 free,   8847.0 used,  54978.4 buff/cache
MiB Swap:  65477.0 total,  63810.0 free,   1667.0 used.  54580.5 avail Mem 
Total: 1934
TCP:   2362 (estab 1233, closed 1105, orphaned 2, timewait 1104)

Transport Total     IP        IPv6
RAW       0         0         0        
UDP       0         0         0        
TCP       1257      430       827      
INET      1257      430       827      
FRAG      0         0         0    

1024

No processes running more than a second. Number of processes well within limits.

I do not know what stats would be relevant beyond these in diagnosing network rate limiting issues. Any pointers would be appreciated.

physics – Can I hang a heavy lens vertically from the body?

I recently purchased a Cotton Carrier system which uses a clip to hang the camera vertically from the chest area. I am using this with a D500 and a 200-500 lens, which has a tripod foot. When I am using a tripod, naturally I use the Arca-Swiss mount to attach the tripod foot to the tripod. However with the Cotton Carrier, it would keep the camera closer to my body and more stable if I could attach their clip to the body rather than then lens.

Is this an acceptable way to carry a body+lens? I understand it would not be a good idea if the lens were held out horizontally from the camera, but I don’t know the physics of it if the lens is vertical underneath the body. It is a different direction of force, but I am unsure if it is worse/better.

Installing any NVIDIA drivers causes 20.04 to hang on boot

(While this question may seem like a duplicate, I’ve tried the solutions laid out in all the other similar questions and none of them did anything for me. In addition, they were asked years ago, so I doubt they were running 20.04 anyway.)

The problem is that when I install any NVIDIA drivers (this means 440, 435, and 390, since they’re the ones available from the package manager. I’m willing to try others if you think it would help, but I haven’t yet), the system can’t boot. I can’t drop to terminal or anything either—all of the Ctrl+Alt+Fx keys just show a flashing black cursor and nothing else, and when I try to go back, I can’t. The only way to get out of it is to use Sysrq+REISUB. Then I have to boot in recovery mode and execute apt purge ^nvidia to get rid of the drivers before it will let me boot again. When I am logged in (whether it’s recovery mode or just the desktop) my graphics card is shown in lshw -C video and lspci as a 3D controller. Here’s the exact output:

01:00.0 3D controller: NVIDIA Corporation TU117GLM (Quadro T2000 Mobile / Max-Q) (rev ff)

What I’ve tried so far:

  • Editing /etc/gdm3/custom.conf to uncomment WaylandEnable=False
  • Editing the grub boot to add nouveau.modeset=0
  • Adding ppa:graphics-drivers and trying to install any of their packages which are listed on launchpad.org—APT is Unable to locate package nvidia-graphics-drivers-<version>.
  • As I said, I’ve tried using all of the drivers available to me from APT, including the ones mentioned above and 340. When I tried 340, the computer was completely unresponsive after boot—I couldn’t even use SysRq to reboot, so I had to hold the power button.

Previously to this I’ve actually been able to use the GPU fully. I think it initially broke because I tried to use LightDM, but now that I’ve uninstalled it, the drivers still don’t work.

Please help!

Software:
Ubuntu 20.04, updated from 19.10
Kernel version 5.4.0-29-generic

Hardware:
Dell Precision 5540
Intel i9-9980H
NVIDIA Quadro T2000 (the bane of my existence with Ubuntu)
16GB RAM
512GB NVMe SSD (I changed the BIOS to AHCI to accommodate this, in case that’s important)

dnd 5e: Can Thorn Whip be used to hang an enemy in combat?

Everybody "you are the DM, so you decide"The answers are technically true, but they miss the big picture, that you just created a home rule that is completely unbalanced.

Thorn Whip is a cantrip that deals 1d6 damage and increases 1d6 over the usual cantrip levels. This means that it will cause between 1 and 6 damages.

Now add weight / 25 damage to the mix. Suppose we are dealing with a relatively average 175-pound person. That's a flat damage of +7, which is absolutely ridiculous. A cantrip that deals 1d6 + 7 damage is not balanced in the least. Warlocks can get 1d10 + 5 with a little investment, and everyone knows how that ends, with warlocks essentially just spamming Eldritch Blast the entire game and not much else. And that's a "relatively average person", once players realize this hack, wait for them to start carrying their maximum carrying capacity before doing this hack for extra damage + 4 easy. Or by making heavier characters. You could easily get a flat damage of +20 if you make a Goliath druid that has its maximum capacity.

Then, on top of that, you decided they can instantly KO someone if they manage to hold on for 1 + CON turns of the monster AND essentially face each other in the air, so out of the fight? All for the low cost of a single trip.

Go by the & # 39; rule of how great & # 39; It's great, but you must realize that you are setting a precedent here. You've taken a cantrip meant for minor damage and crowd control, and you've made it one of the deadliest murder tools out there.

A Champion NPC has 143 HP, +2 CON, and a CR of 9. With your new Thorn Whip rules, a single low-level druid can eliminate him in 3 turns. This will dramatically unbalance the game if the Druid starts using this more frequently, making it much less fun for other players who are stuck with their normal tools.