Skip to content

Instantly share code, notes, and snippets.

@Mons
Mons / change-tarantool-backup-uuid.pl
Last active Oct 28, 2021
Script for changing stored UUID of Tarantool backup files (.snap, .xlog, .vy*)
View change-tarantool-backup-uuid.pl
#!/usr/bin/env perl
use 5.010;
use strict;
use File::Find;
use Getopt::Long;
sub usage {
return <<EOF
===============================================================
@Mons
Mons / timegm.lua
Last active Aug 20, 2021
Lua FFI implementation of timegm (convert any given date to GMT epoch timestamp)
View timegm.lua
local ffi = require 'ffi'
if not pcall(ffi.typeof, 'struct tm') then
ffi.cdef[[
struct tm {
int tm_sec;
int tm_min;
int tm_hour;
int tm_mday;
int tm_mon;
View better-assert.lua
if not pcall(assert, false, {}) then
local a = _G.assert
assert = function(t, m)
if t == nil then
error("value expected", 2)
end
if not t then
if m == nil then
error("assertion failed", 2)
else
@Mons
Mons / bad_tarantool.sh
Created Jul 6, 2021 — forked from ochaton/bad_tarantool.sh
Monitoring fiber of latency of single ev_once
View bad_tarantool.sh
> tarantool -l fiber -l clock -e 'fiber.create(function() while true do while clock.time() < fiber.time()+0.1 do end fiber.sleep(0.01) end end)' test.lua
entering the event loop
e:100.011µs p:0.017µs t:99.998µs
e:100.042µs p:0.010µs t:100.035µs
e:100.013µs p:0.015µs t:100.004µs
e:100.005µs p:0.006µs t:99.994µs
e:100.007µs p:0.004µs t:99.996µs
e:100.010µs p:0.009µs t:99.993µs
e:100.012µs p:0.016µs t:100.000µs
e:100.009µs p:0.050µs t:99.999µs
@Mons
Mons / ftrace-example.lua
Created Apr 15, 2021
Trace function call time
View ftrace-example.lua
local TOO_LONG_CALL_THRESHOLD = 0.1
local log = require('log')
local clock = require 'clock'
local json = require 'json'.new() json.cfg{ encode_use_tostring = true }
local function ftail(fname, args, start, ...)
local run = clock.realtime() - start
if run > TOO_LONG_CALL_THRESHOLD then
log.info("Function call %s(%s) was too long: %0.2fs", fname, json.encode(args), run)
View http-test.lua
local client = require 'http.client'
local fiber = require 'fiber'
local yaml = require 'yaml'
local uris = {
'http://httpbin.org/get?1',
'http://httpbin.org/get?2',
'http://httpbin.org/get?3',
'http://httpbin.org/get?4',
'http://httpbin.org/get?5',
View fiber-schedule-bench.lua
local fiber = require 'fiber'
local clock = require 'clock'
local N = 1e6
do
local i = 0;
local cond = fiber.cond()
local function creator()
i = i + 1
@Mons
Mons / tar_test.c
Created Dec 14, 2020 — forked from danikin/tar_test.c
Tarantool Quick Test
View tar_test.c
// Tarantool quick test
// Copyright, Dennis Anikin 2016
//
// Quick disclaimer:
//
// This test shows 500K-1000K transactions per second on one CPU core
// and 600K-1600K queries per second on one CPU core.
//
// Based on the $6.57 per-month-price for the AWS t2.micro instance we can afford the tremendous number of 630bln queries for just $1
//
View fx.lua
for _,expr in pairs({
"1",
"N",
"N/2+1",
"N/2+2",
"math.random()"
}) do
local fun,err = loadstring("return "..expr)
if not fun then error("Bad expression '"..expr.."'") end
local count = math.floor(math.random(7))
@Mons
Mons / change-uuid
Last active Feb 10, 2020
UUID Changer for Tarantool storage files
View change-uuid
#!/usr/bin/env perl
use 5.010;
use strict;
use File::Find;
use Getopt::Long;
sub usage {
return <<EOF
===============================================================